
_Bool knuth_morris_pratt(uchar *haystack,uchar *needle,size_t needle_len,uchar **resultp)

{
  byte bVar1;
  ushort uVar2;
  bool bVar3;
  undefined4 *puVar4;
  mbstate_t *pmVar5;
  undefined3 extraout_var;
  uint uVar6;
  size_t sVar7;
  undefined4 *puVar8;
  int iVar9;
  char cVar14;
  int iVar10;
  _Bool _Var15;
  mbstate_t *pmVar11;
  undefined4 *puVar12;
  undefined1 uVar16;
  int *piVar13;
  int iVar17;
  uchar uVar23;
  undefined4 uVar18;
  undefined4 uVar19;
  uchar *puVar20;
  undefined4 *puVar21;
  int *piVar22;
  byte *s;
  mbstate_t *pmVar24;
  undefined4 *puVar25;
  char *string;
  mbstate_t *pwc;
  mbstate_t *needle_00;
  mbstate_t *pmVar26;
  mbstate_t *pmVar27;
  undefined4 uVar28;
  mbstate_t *pmVar29;
  mbstate_t *pmVar30;
  size_t *psVar31;
  mbstate_t *pmVar32;
  byte *pbVar33;
  int unaff_s2;
  mbstate_t *unaff_s3;
  mbstate_t *unaff_s4;
  mbstate_t *unaff_s5;
  mbstate_t *unaff_s6;
  byte *pbVar34;
  undefined4 unaff_s7;
  undefined *puVar35;
  code *pcVar36;
  undefined1 *puVar37;
  undefined1 *puVar38;
  undefined1 *puVar39;
  mbstate_t *ps;
  code *pcVar40;
  code *pcVar41;
  mbstate_t *pmVar42;
  undefined1 auStack_38 [16];
  undefined4 uStack_1c;
  int iStack_14;
  
  pmVar32 = (mbstate_t *)PTR___stack_chk_guard_00075be8;
  puVar37 = auStack_38;
  uVar6 = needle_len * 4;
  iStack_14 = *(int *)PTR___stack_chk_guard_00075be8;
  if (((int)uVar6 < 0) || (needle_len >> 0x1e != 0)) {
LAB_0002d620:
    _Var15 = false;
  }
  else {
    if (uVar6 < 0xfb1) {
      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);
      puVar37 = auStack_38 + iVar17;
      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;
      _Var15 = false;
      puVar39 = auStack_38 + iVar17;
      if (uVar6 == 0) goto LAB_0002d5c8;
    }
    else {
      uStack_1c = needle;
      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);
      needle = uStack_1c;
      puVar39 = auStack_38;
      if (uVar6 == 0) goto LAB_0002d620;
    }
    puVar37 = puVar39;
    *(undefined4 *)(uVar6 + 4) = 1;
    if (2 < needle_len) {
      psVar31 = (size_t *)(uVar6 + 8);
      iVar17 = 0;
      sVar7 = 2;
      do {
        uVar23 = needle[iVar17];
        while (uVar23 != needle[sVar7 - 1]) {
          if (iVar17 == 0) {
            iVar17 = 0;
            *psVar31 = sVar7;
            goto LAB_0002d564;
          }
          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);
          uVar23 = needle[iVar17];
        }
        iVar17 = iVar17 + 1;
        *psVar31 = sVar7 - iVar17;
LAB_0002d564:
        sVar7 = sVar7 + 1;
        psVar31 = psVar31 + 1;
      } while (needle_len != sVar7);
    }
    *resultp = (uchar *)0x0;
    sVar7 = 0;
    uVar23 = *haystack;
    puVar20 = haystack;
LAB_0002d580:
    if (uVar23 != '\0') {
      while (needle[sVar7] != uVar23) {
        if (sVar7 == 0) {
          uVar23 = puVar20[1];
          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);
          puVar20 = puVar20 + 1;
          goto LAB_0002d580;
        }
        iVar17 = *(int *)(uVar6 + sVar7 * 4);
        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);
        sVar7 = sVar7 - iVar17;
        if (uVar23 == '\0') goto LAB_0002d5b8;
      }
      sVar7 = sVar7 + 1;
      if (needle_len == sVar7) {
        *resultp = haystack;
        goto LAB_0002d5b8;
      }
      uVar23 = puVar20[1];
      puVar20 = puVar20 + 1;
      goto LAB_0002d580;
    }
LAB_0002d5b8:
    (*(code *)PTR_freea_000758e0)();
    _Var15 = true;
  }
LAB_0002d5c8:
  if (iStack_14 == pmVar32->__count) {
    return _Var15;
  }
  pcVar40 = mbuiter_multi_next;
  puVar35 = PTR___stack_chk_fail_00075ba8;
  (*(code *)PTR___stack_chk_fail_00075ba8)();
  pmVar27 = (mbstate_t *)&DAT_000000b3;
  iVar17 = *(int *)(puVar35 + 0x47f48);
  pcVar36 = *(code **)(puVar35 + 0x48360);
  pwc = (mbstate_t *)(*(int *)(puVar35 + 0x47f48) + -0x120);
  *(undefined **)(puVar37 + -0x10) = puVar35 + 0x4ff10;
  *(code **)(puVar37 + -4) = pcVar40;
  pcVar41 = knuth_morris_pratt_multibyte;
  iVar17 = iVar17 + -0x114;
  (*pcVar36)();
  puVar38 = puVar37 + -0x128;
  ps = (mbstate_t *)(puVar37 + -0x128);
  puVar8 = *(undefined4 **)(pcVar36 + 0x4853c);
  pcVar40 = *(code **)(pcVar36 + 0x48238);
  *(undefined1 **)(puVar37 + -0x28) = auStack_38;
  *(undefined4 *)(puVar37 + -0x2c) = unaff_s7;
  *(undefined4 **)(puVar37 + -0x10c) = puVar8;
  *(code **)(puVar37 + -0x118) = pcVar36 + 0x4fed4;
  *(int *)(puVar37 + -0x108) = iVar17;
  *(code **)(puVar37 + -0x24) = pcVar41;
  *(mbstate_t **)(puVar37 + -0x30) = unaff_s6;
  *(mbstate_t **)(puVar37 + -0x34) = unaff_s5;
  *(mbstate_t **)(puVar37 + -0x38) = unaff_s4;
  *(mbstate_t **)(puVar37 + -0x3c) = unaff_s3;
  *(int *)(puVar37 + -0x40) = unaff_s2;
  *(mbstate_t **)(puVar37 + -0x44) = pmVar32;
  *(uchar **)(puVar37 + -0x48) = haystack;
  *(mbstate_t **)(puVar37 + -0x110) = pmVar27;
  *(undefined4 *)(puVar37 + -0x4c) = *puVar8;
  needle_00 = pwc;
  uVar6 = (*pcVar40)(pwc);
  iVar17 = *(int *)(puVar37 + -0x118);
  pmVar42 = (mbstate_t *)((ulonglong)uVar6 * 0x2c >> 0x20);
  *(uint *)(puVar37 + -0x104) = uVar6;
  puVar39 = puVar37 + -0x128;
  if ((-1 < (int)((ulonglong)uVar6 * 0x2c)) &&
     (pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0)) {
    if ((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1) {
      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);
      puVar38 = puVar37 + iVar10 + -0x128;
      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);
    }
    else {
      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();
      iVar17 = *(int *)(puVar37 + -0x118);
    }
    pmVar27 = pmVar42;
    puVar39 = puVar38;
    if ((mbstate_t *)haystack != (mbstate_t *)0x0) {
      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);
      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);
      *(undefined4 *)(puVar37 + -0xf0) = 0;
      unaff_s2 = 1;
      *(undefined4 *)(puVar37 + -0xec) = 0;
      *(undefined4 *)(puVar37 + -0x100) = uVar18;
      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);
      *(mbstate_t **)(puVar37 + -0xe4) = pwc;
      puVar37[-0xf4] = 0;
      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);
      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);
      puVar37[-0xe8] = 0;
      *(mbstate_t **)(puVar37 + -0xfc) =
           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);
      unaff_s4 = (mbstate_t *)haystack;
      do {
        if (puVar37[-0xf4] != '\0') {
LAB_0002d840:
          sVar7 = (**(code **)(iVar17 + -0x7a18))();
          sVar7 = strnlen1((char *)pwc,sVar7);
                    /* WARNING: Subroutine does not return */
          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);
        }
        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;
        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>
             ((uint)needle_00 & 0x1f) & 1) == 0) {
          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);
          iVar17 = *(int *)(puVar37 + -0x118);
          if (iVar10 == 0) goto LAB_0002e0bc;
          puVar37[-0xf4] = 1;
          goto LAB_0002d840;
        }
        *(undefined4 *)(puVar37 + -0xe0) = 1;
        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;
        puVar37[-0xdc] = 1;
        puVar37[-0xe8] = 1;
        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;
        if (pmVar32 == (mbstate_t *)0x0) {
          uVar6 = *(uint *)(puVar37 + -0x104);
          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;
          if (uVar6 < 3) goto LAB_0002d988;
          iVar10 = 0;
          pwc = (mbstate_t *)0x2;
          pmVar27 = (mbstate_t *)haystack;
          goto FUN_0002d8f0;
        }
        uVar23 = '\x01';
        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);
        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {
          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);
          iVar17 = *(int *)(puVar37 + -0x118);
          uVar23 = puVar37[-0xdc];
          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);
          unaff_s4->__count = iVar10;
        }
        else {
          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);
        }
        (unaff_s4->__value).__wch = (uint)pmVar42;
        *(uchar *)&unaff_s4[1].__count = uVar23;
        if (uVar23 != '\0') {
          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);
        }
        unaff_s4 = unaff_s4 + 5;
        puVar37[-0xe8] = 0;
        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));
        *(mbstate_t **)(puVar37 + -0xe4) = pwc;
      } while( true );
    }
  }
  _Var15 = false;
LAB_0002db5c:
  pmVar42 = *(mbstate_t **)(puVar37 + -0x4c);
  pcVar36 = *(code **)(iVar17 + -0x79d8);
  puVar38 = puVar39;
  if (pmVar42 == (mbstate_t *)**(undefined4 **)(puVar37 + -0x10c)) {
    return _Var15;
  }
  goto LAB_0002e0e0;
FUN_0002d8f0:
  pmVar32 = (mbstate_t *)(uint)*(byte *)&pmVar27[6].__count;
  do {
    pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8);
    if ((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')) {
      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;
      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {
        needle_00 = (mbstate_t *)pmVar26->__count;
        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);
        iVar17 = *(int *)(puVar37 + -0x118);
        if (iVar9 == 0) {
          iVar9 = *(int *)(puVar37 + -0xfc);
          goto LAB_0002d964;
        }
      }
    }
    else {
      iVar9 = *(int *)(puVar37 + -0xfc);
      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {
LAB_0002d964:
        iVar10 = iVar10 + 1;
        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;
        goto LAB_0002d978;
      }
    }
    if (iVar10 == 0) break;
    iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4);
  } while( true );
  *(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4) = pwc;
LAB_0002d978:
  pwc = (mbstate_t *)((int)&pwc->__count + 1);
  pmVar27 = pmVar27 + 5;
  if (*(mbstate_t **)(puVar37 + -0x104) == pwc) goto LAB_0002d988;
  goto FUN_0002d8f0;
LAB_0002d988:
  uVar18 = *(undefined4 *)(iVar17 + -0x7c98);
  unaff_s4 = (mbstate_t *)(puVar37 + -0xb8);
  uVar19 = *(undefined4 *)(puVar37 + -0x108);
  unaff_s6 = (mbstate_t *)(puVar37 + -0x80);
  unaff_s2 = 0;
  *(undefined4 *)(puVar37 + -0xb8) = 0;
  *(undefined4 *)(puVar37 + -0x100) = uVar18;
  unaff_s3 = (mbstate_t *)(puVar37 + -0x68);
  unaff_s5 = (mbstate_t *)(puVar37 + -0xa0);
  *(undefined4 *)(puVar37 + -0xb4) = 0;
  *(undefined4 *)(puVar37 + -0x80) = 0;
  *(undefined4 *)(puVar37 + -0xac) = uVar19;
  **(undefined4 **)(puVar37 + -0x110) = 0;
  cVar14 = '\0';
  *(undefined4 *)(puVar37 + -0x7c) = 0;
  puVar37[-0xbc] = 0;
  puVar37[-0xb0] = 0;
  *(undefined4 *)(puVar37 + -0x74) = uVar19;
  puVar37[-0x84] = 0;
  puVar37[-0x78] = 0;
  pmVar27 = pmVar42;
joined_r0x0002d9dc:
  do {
    if (cVar14 == '\0') {
      pwc = *(mbstate_t **)(puVar37 + -0x74);
      goto LAB_0002daa0;
    }
    uVar6 = *(uint *)(puVar37 + -0x68);
    if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;
    iVar10 = unaff_s2 * 4;
    pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);
LAB_0002da00:
    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);
    pmVar27 = pmVar32;
    if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {
      pwc = *(mbstate_t **)(puVar37 + -0x74);
      pcVar36 = *(code **)(iVar17 + -0x79c0);
      iVar17 = pmVar42->__count;
      *(int *)(puVar37 + -0x108) = iVar10;
      needle_00 = pwc;
      iVar9 = (*pcVar36)(iVar17);
      iVar17 = *(int *)(puVar37 + -0x118);
      iVar10 = *(int *)(puVar37 + -0x108);
      if (iVar9 == 0) goto LAB_0002db1c;
      cVar14 = puVar37[-0xb0];
      if (unaff_s2 == 0) goto LAB_0002da1c;
      iVar9 = *(int *)(puVar37 + -0xfc);
    }
    else {
LAB_0002da10:
      iVar9 = *(int *)(puVar37 + -0xfc);
      if (unaff_s2 == 0) {
        cVar14 = puVar37[-0xb0];
LAB_0002da1c:
        if (cVar14 == '\0') {
          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);
          if (puVar37[-0xbc] != '\0') {
LAB_0002df40:
            sVar7 = (**(code **)(iVar17 + -0x7a18))();
            sVar7 = strnlen1((char *)pmVar32,sVar7);
                    /* WARNING: Subroutine does not return */
            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);
          }
          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;
          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)
               >> ((uint)needle_00 & 0x1f) & 1) == 0) {
            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);
            iVar17 = *(int *)(puVar37 + -0x118);
            if (iVar10 != 0) {
              puVar37[-0xbc] = 1;
              goto LAB_0002df40;
            }
            goto LAB_0002e0bc;
          }
          *(undefined4 *)(puVar37 + -0xa8) = 1;
          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;
          puVar37[-0xa4] = 1;
          puVar37[-0xb0] = 1;
          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;
        }
        else {
          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);
          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;
        }
        pcVar36 = *(code **)(iVar17 + -0x7b80);
        if (pmVar32 != (mbstate_t *)0x0) {
LAB_0002da78:
          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);
          puVar37[-0xb0] = 0;
          puVar37[-0x78] = 0;
          *(uchar **)(puVar37 + -0xac) =
               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));
          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));
          *(mbstate_t **)(puVar37 + -0x74) = pwc;
LAB_0002daa0:
          if (puVar37[-0x84] != '\0') {
LAB_0002dc78:
            sVar7 = (**(code **)(iVar17 + -0x7a18))();
            sVar7 = strnlen1((char *)pwc,sVar7);
                    /* WARNING: Subroutine does not return */
            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);
          }
          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>
               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {
            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);
            iVar17 = *(int *)(puVar37 + -0x118);
            if (iVar10 != 0) {
              puVar37[-0x84] = 1;
              goto LAB_0002dc78;
            }
            goto LAB_0002e0bc;
          }
          *(undefined4 *)(puVar37 + -0x70) = 1;
          uVar6 = (uint)(char)*(uchar *)&pwc->__count;
          puVar37[-0x6c] = 1;
          puVar37[-0x78] = 1;
          *(uint *)(puVar37 + -0x68) = uVar6;
LAB_0002dae8:
          iVar10 = unaff_s2 * 4;
          if (uVar6 == 0) goto LAB_0002db40;
          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);
          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;
          if (pmVar42[1].__value.__wch == uVar6) break;
          goto LAB_0002da10;
        }
        goto LAB_0002ddd4;
      }
    }
    pwc = *(mbstate_t **)(iVar9 + iVar10);
    *(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;
    if (pwc == (mbstate_t *)0x0) {
      cVar14 = puVar37[-0x78];
      goto joined_r0x0002d9dc;
    }
    if (puVar37[-0xb0] == '\0') {
      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);
      goto LAB_0002dd80;
    }
    pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);
    if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;
    while( true ) {
      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);
      puVar37[-0xb0] = 0;
      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));
      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;
      if (pwc == (mbstate_t *)0x0) break;
LAB_0002dd80:
      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;
      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;
      pcVar36 = *(code **)(iVar17 + -0x799c);
      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>
           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;
      *(undefined4 *)(puVar37 + -0xa8) = 1;
      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;
      puVar37[-0xa4] = 1;
      puVar37[-0xb0] = 1;
      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;
LAB_0002ddcc:
      pcVar36 = *(code **)(iVar17 + -0x7b80);
      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;
    }
    cVar14 = puVar37[-0x78];
    unaff_s2 = *(int *)(puVar37 + -0x108);
  } while( true );
  pmVar32 = *(mbstate_t **)(puVar37 + -0x70);
  pwc = *(mbstate_t **)(puVar37 + -0x74);
LAB_0002db1c:
  pwc = (mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count);
  unaff_s2 = unaff_s2 + 1;
  puVar37[-0x78] = 0;
  *(mbstate_t **)(puVar37 + -0x74) = pwc;
  if (*(int *)(puVar37 + -0x104) == unaff_s2) {
    **(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac);
LAB_0002db40:
    (**(code **)(iVar17 + -0x7ca0))(haystack);
    _Var15 = true;
    iVar17 = *(int *)(puVar37 + -0x118);
    goto LAB_0002db5c;
  }
  goto LAB_0002daa0;
LAB_0002ef34:
  pmVar11 = *(mbstate_t **)(puVar38 + -0x148);
  goto LAB_0002e2ac;
LAB_0002ddd4:
  (*pcVar36)();
LAB_0002dddc:
  iVar10 = (*pcVar36)(unaff_s4);
  iVar17 = *(int *)(puVar37 + -0x118);
  if (iVar10 != 0) {
    puVar37[-0xbc] = 1;
LAB_0002ddf4:
    sVar7 = (**(code **)(iVar17 + -0x7a18))();
    sVar7 = strnlen1((char *)pmVar32,sVar7);
                    /* WARNING: Subroutine does not return */
    rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);
  }
LAB_0002e0bc:
  pmVar27 = (mbstate_t *)0x96;
  pcVar36 = *(code **)(iVar17 + -0x7bb0);
  needle_00 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);
  pmVar42 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x100);
  (*pcVar36)();
LAB_0002e0e0:
  pcVar41 = mbsstr;
  (*pcVar36)();
  puVar8 = *(undefined4 **)(pcVar36 + 0x47b00);
  pcVar40 = *(code **)(pcVar36 + 0x47a80);
  *(undefined4 **)(puVar38 + -0x154) = puVar8;
  *(code **)(puVar38 + -0x170) = pcVar36 + 0x4f498;
  *(mbstate_t **)(puVar38 + -0x1c) = unaff_s3;
  *(int *)(puVar38 + -0x20) = unaff_s2;
  *(code **)(puVar38 + -4) = pcVar41;
  *(undefined1 **)(puVar38 + -8) = puVar37 + -0x128;
  *(mbstate_t **)(puVar38 + -0xc) = pwc;
  *(mbstate_t **)(puVar38 + -0x10) = unaff_s6;
  *(mbstate_t **)(puVar38 + -0x14) = unaff_s5;
  *(mbstate_t **)(puVar38 + -0x18) = unaff_s4;
  *(mbstate_t **)(puVar38 + -0x24) = pmVar32;
  *(uchar **)(puVar38 + -0x28) = haystack;
  *(undefined4 *)(puVar38 + -0x2c) = *puVar8;
  pmVar26 = needle_00;
  uVar6 = (*pcVar40)();
  iVar17 = *(int *)(puVar38 + -0x170);
  pmVar11 = pmVar42;
  if (uVar6 < 2) {
    unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count;
    ps = (mbstate_t *)(puVar37 + -0x128);
    if (unaff_s6 != (mbstate_t *)0x0) {
      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);
      ps = (mbstate_t *)(puVar37 + -0x128);
      if (*(uchar *)&pmVar42->__count != '\0') {
        pwc = (mbstate_t *)0x0;
        unaff_s5 = (mbstate_t *)0x0;
        iVar10 = 1;
        ps = (mbstate_t *)(puVar38 + -0x148);
        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);
        pmVar30 = needle_00;
        pmVar29 = pmVar42;
        pmVar5 = (mbstate_t *)0x0;
LAB_0002e18c:
        do {
          unaff_s4 = pmVar5;
          pmVar11 = pmVar29;
          pmVar42 = pmVar11;
          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&
             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {
            *(int *)(puVar38 + -0x168) = iVar10;
            if (pmVar30 != (mbstate_t *)0x0) {
              pcVar36 = *(code **)(iVar17 + -0x7af4);
              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);
              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;
              iVar10 = (*pcVar36)(pmVar30);
              iVar17 = *(int *)(puVar38 + -0x170);
              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);
              iVar10 = *(int *)(puVar38 + -0x168);
              pwc = unaff_s4;
              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;
            }
            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);
            pmVar26 = needle_00;
            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,
                                        (uchar **)ps);
            iVar17 = *(int *)(puVar38 + -0x170);
            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;
            pmVar30 = (mbstate_t *)0x0;
            iVar10 = 0;
          }
LAB_0002e218:
          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);
          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);
          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {
            uVar23 = *(uchar *)((int)&needle_00->__count + 1);
            if (uVar23 == '\0') goto LAB_0002e2ac;
            if (*(uchar *)&pmVar29->__count == '\0') break;
            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);
            if (uVar23 == *(uchar *)&pmVar29->__count) {
              puVar20 = (uchar *)((int)&needle_00->__count + 2);
              pmVar24 = pmVar29;
              do {
                pmVar26 = (mbstate_t *)(int)(char)*puVar20;
                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);
                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;
                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;
                puVar20 = puVar20 + 1;
                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;
                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);
              } while (pmVar26 == pmVar27);
            }
            goto LAB_0002e18c;
          }
          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);
        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');
      }
LAB_0002e2ec:
      pmVar11 = (mbstate_t *)0x0;
    }
LAB_0002e2ac:
    s = *(byte **)(puVar38 + -0x2c);
    if (s == (byte *)**(undefined4 **)(puVar38 + -0x154)) {
      return SUB41(pmVar11,0);
    }
  }
  else {
    bVar1 = *(byte *)&needle_00->__count;
    haystack = puVar38 + -0x140;
    iVar10 = *(int *)(iVar17 + -0x7c98);
    *(undefined4 *)(puVar38 + -0x140) = 0;
    pmVar26 = (mbstate_t *)(uint)bVar1;
    *(undefined4 *)(puVar38 + -0x13c) = 0;
    *(int *)(puVar38 + -0x168) = iVar10;
    *(mbstate_t **)(puVar38 + -0x134) = needle_00;
    puVar38[-0x144] = 0;
    uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);
    puVar38[-0x138] = 0;
    if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {
      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;
      *(undefined4 *)(puVar38 + -0x130) = 1;
      puVar38[-300] = 1;
      puVar38[-0x138] = 1;
      if ((char)bVar1 != 0) {
        puVar38[-0xd4] = 0;
        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);
        *(undefined4 *)(puVar38 + -0x108) = 0;
        *(undefined4 *)(puVar38 + -0x15c) = 1;
        ps = (mbstate_t *)(puVar38 + -0xd0);
        *(undefined4 *)(puVar38 + -0xd0) = 0;
        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;
        iVar10 = *(int *)(iVar17 + -32000);
        pwc = (mbstate_t *)(puVar38 + -0x80);
        *(undefined4 *)(puVar38 + -0x104) = 0;
        *(undefined4 *)(puVar38 + -0xcc) = 0;
        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;
        *(undefined4 *)(puVar38 + -0x160) = 0;
        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;
        puVar38[-0x10c] = 0;
        *(undefined4 *)(puVar38 + -0x150) = 0;
        puVar38[-0x100] = 0;
        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;
        puVar38[-200] = 0;
        cVar14 = puVar38[-0xd4];
        haystack = (uchar *)(mbstate_t *)0x0;
        pmVar32 = pmVar42;
        do {
          if (cVar14 != '\0') {
LAB_0002e6f4:
            sVar7 = (**(code **)(iVar17 + -0x7a18))();
            sVar7 = strnlen1((char *)pmVar32,sVar7);
                    /* WARNING: Subroutine does not return */
            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);
          }
          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)
               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {
            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);
            iVar17 = *(int *)(puVar38 + -0x170);
            if (iVar10 == 0) goto LAB_0002ef3c;
            puVar38[-0xd4] = 1;
            goto LAB_0002e6f4;
          }
          *(undefined4 *)(puVar38 + -0xc0) = 1;
          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;
          puVar38[-0xbc] = 1;
          puVar38[-200] = 1;
          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;
          pmVar11 = (mbstate_t *)0x0;
          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;
          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {
LAB_0002e448:
            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);
            if (puVar38[-300] == '\0') goto LAB_0002e89c;
            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);
            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;
LAB_0002e6c8:
            iVar10 = *(int *)(puVar38 + -0xc4);
            haystack = (uchar *)pmVar32;
LAB_0002e6cc:
            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);
            pmVar11 = (mbstate_t *)haystack;
          }
          else {
            uVar6 = *(uint *)(puVar38 + -0x15c);
            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {
              *(undefined4 *)(puVar38 + -0x15c) = 1;
            }
            else {
              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));
              if (unaff_s5 == (mbstate_t *)0x0) {
                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;
                if (puVar38[-0xf4] != '\0') {
                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);
                  goto LAB_0002ed78;
                }
LAB_0002ed84:
                uVar6 = (uint)(byte)puVar38[-0xbc];
                *(uchar **)(puVar38 + -0x150) = haystack;
                *(undefined4 *)(puVar38 + -0x15c) = 1;
              }
              else {
                if (puVar38[-0x100] == '\0') {
                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);
                  goto LAB_0002ea08;
                }
                iVar10 = *(int *)(puVar38 + -0xf0);
                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;
                do {
                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);
                  puVar38[-0x100] = 0;
                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));
                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;
                  unaff_s6 = pmVar32;
                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;
LAB_0002ea08:
                  if (puVar38[-0x10c] != '\0') {
LAB_0002eb98:
                    sVar7 = (**(code **)(iVar17 + -0x7a18))();
                    sVar7 = strnlen1((char *)pmVar32,sVar7);
                    /* WARNING: Subroutine does not return */
                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);
                  }
                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +
                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>
                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {
                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);
                    iVar17 = *(int *)(puVar38 + -0x170);
                    if (iVar10 != 0) {
                      puVar38[-0x10c] = 1;
                      goto LAB_0002eb98;
                    }
                    goto LAB_0002ef3c;
                  }
                  *(undefined4 *)(puVar38 + -0xf8) = 1;
                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;
                  puVar38[-0xf4] = 1;
                  puVar38[-0x100] = 1;
                  *(int *)(puVar38 + -0xf0) = iVar10;
LAB_0002ea50:
                } while (iVar10 != 0);
                pcVar36 = *(code **)(puVar38 + -0x14c);
                pmVar32 = (mbstate_t *)0x0;
                pmVar11 = (mbstate_t *)0x0;
                if (puVar38[-0x100] == '\0') {
LAB_0002ed2c:
                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);
LAB_0002ed30:
                  if (puVar38[-0x10c] != '\0') {
LAB_0002ee14:
                    sVar7 = (**(code **)(iVar17 + -0x7a18))();
                    sVar7 = strnlen1((char *)unaff_s6,sVar7);
                    /* WARNING: Subroutine does not return */
                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);
                  }
                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +
                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>
                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {
                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);
                    iVar17 = *(int *)(puVar38 + -0x170);
                    if (iVar10 != 0) {
                      puVar38[-0x10c] = 1;
                      goto LAB_0002ee14;
                    }
                    goto LAB_0002ef3c;
                  }
                  *(undefined4 *)(puVar38 + -0xf8) = 1;
                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;
                  puVar38[-0xf4] = 1;
                  puVar38[-0x100] = 1;
                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;
LAB_0002ed78:
                  pcVar36 = *(code **)(puVar38 + -0x14c);
                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;
                }
                pmVar27 = (mbstate_t *)(puVar38 + -0x148);
                pmVar26 = needle_00;
                iVar10 = (*pcVar36)(pmVar42);
                iVar17 = *(int *)(puVar38 + -0x170);
                *(int *)(puVar38 + -0x15c) = iVar10;
                pmVar32 = pmVar11;
                if (iVar10 != 0) goto LAB_0002ef34;
                uVar6 = (uint)(byte)puVar38[-0xbc];
                *(uchar **)(puVar38 + -0x150) = haystack;
              }
            }
            if (uVar6 != 0) goto LAB_0002e448;
            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);
LAB_0002e89c:
            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);
            iVar10 = *(int *)(puVar38 + -0xc4);
            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {
              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);
              pmVar27 = unaff_s5;
              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);
              iVar17 = *(int *)(puVar38 + -0x170);
              if (iVar9 == 0) {
LAB_0002e464:
                puVar8 = (undefined4 *)(puVar38 + -0xd4);
                puVar4 = (undefined4 *)(puVar38 + -0x9c);
                do {
                  puVar21 = puVar4;
                  puVar12 = puVar8 + 4;
                  uVar18 = puVar8[3];
                  uVar28 = puVar8[1];
                  uVar19 = puVar8[2];
                  *puVar21 = *puVar8;
                  puVar21[1] = uVar28;
                  puVar21[2] = uVar19;
                  puVar21[3] = uVar18;
                  puVar25 = *(undefined4 **)(puVar38 + -0x158);
                  puVar8 = puVar12;
                  puVar4 = puVar21 + 4;
                } while (puVar12 != puVar25);
                bVar1 = *(byte *)&needle_00->__count;
                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;
                pmVar27 = (mbstate_t *)*puVar25;
                puVar21[5] = puVar25[1];
                puVar21[4] = pmVar27;
                puVar38[-0x90] = 0;
                *(mbstate_t **)(puVar38 + -0x54) = needle_00;
                puVar38[-100] = 0;
                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);
                *(undefined4 *)(puVar38 + -0x60) = 0;
                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);
                *(undefined4 *)(puVar38 + -0x5c) = 0;
                puVar38[-0x58] = 0;
                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {
                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;
                  *(undefined4 *)(puVar38 + -0x50) = 1;
                  puVar38[-0x4c] = 1;
                  puVar38[-0x58] = 1;
                  if ((char)bVar1 == 0) {
                    uVar16 = (**(code **)(iVar17 + -0x7b80))();
                    return (_Bool)uVar16;
                  }
                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);
                  puVar38[-0x58] = 0;
                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);
                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));
                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;
                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);
                  do {
                    if (puVar38[-100] != '\0') {
LAB_0002e630:
                      sVar7 = (**(code **)(iVar17 + -0x7a18))();
                      sVar7 = strnlen1((char *)pmVar32,sVar7);
                    /* WARNING: Subroutine does not return */
                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,
                                  *(mbstate_t **)(puVar38 + -0x164));
                    }
                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;
                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +
                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>
                         ((uint)pmVar26 & 0x1f) & 1) == 0) {
                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));
                      iVar17 = *(int *)(puVar38 + -0x170);
                      if (iVar10 != 0) {
                        puVar38[-100] = 1;
                        goto LAB_0002e630;
                      }
                      goto LAB_0002ef3c;
                    }
                    *(undefined4 *)(puVar38 + -0x50) = 1;
                    uVar23 = *(uchar *)&pmVar32->__count;
                    puVar38[-0x4c] = 1;
                    puVar38[-0x58] = 1;
                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;
                    if ((char)uVar23 == 0) {
                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);
                      pmVar32 = (mbstate_t *)0x0;
                      goto LAB_0002e2ac;
                    }
                    if (puVar38[-0x90] == '\0') {
                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);
                      if (puVar38[-0x9c] != '\0') {
LAB_0002e7d4:
                        sVar7 = (**(code **)(iVar17 + -0x7a18))();
                        sVar7 = strnlen1((char *)pmVar32,sVar7);
                    /* WARNING: Subroutine does not return */
                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);
                      }
                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;
                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +
                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>
                           ((uint)pmVar26 & 0x1f) & 1) == 0) {
                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);
                        iVar17 = *(int *)(puVar38 + -0x170);
                        if (iVar10 != 0) {
                          puVar38[-0x9c] = 1;
                          goto LAB_0002e7d4;
                        }
                        goto LAB_0002ef3c;
                      }
                      *(undefined4 *)(puVar38 + -0x88) = 1;
                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;
                      puVar38[-0x84] = 1;
                      puVar38[-0x90] = 1;
                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;
LAB_0002e5d0:
                      pmVar11 = (mbstate_t *)0x0;
                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;
                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);
                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;
                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;
                    }
                    else {
                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);
                      if (puVar38[-0x84] != '\0') {
                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);
                        goto LAB_0002e5d0;
                      }
LAB_0002e794:
                      iVar10 = *(int *)(puVar38 + -0xc4);
                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;
                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);
                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));
                      iVar17 = *(int *)(puVar38 + -0x170);
                      bVar3 = iVar10 != 0;
                    }
                    pmVar32 = (mbstate_t *)haystack;
                    if (bVar3) goto LAB_0002e6c8;
                    puVar38[-0x90] = 0;
                    puVar38[-0x58] = 0;
                    *(int *)(puVar38 + -0x8c) =
                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);
                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));
                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;
                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);
                  } while( true );
                }
                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);
                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);
                iVar17 = *(int *)(puVar38 + -0x170);
                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);
                if (iVar10 != 0) {
                  pcVar36 = *(code **)(iVar17 + -0x7a18);
                  puVar38[-100] = 1;
                  sVar7 = (*pcVar36)();
                  sVar7 = strnlen1((char *)needle_00,sVar7);
                    /* WARNING: Subroutine does not return */
                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);
                }
                goto LAB_0002ef3c;
              }
            }
          }
          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);
          puVar38[-200] = 0;
          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;
          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;
          cVar14 = puVar38[-0xd4];
          haystack = (uchar *)pmVar11;
        } while( true );
      }
      pmVar32 = (mbstate_t *)0x0;
      ps = (mbstate_t *)(puVar37 + -0x128);
      goto LAB_0002e2ac;
    }
    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);
    iVar17 = *(int *)(puVar38 + -0x170);
    if (iVar10 != 0) {
      pcVar36 = *(code **)(iVar17 + -0x7a18);
      puVar38[-0x144] = 1;
      sVar7 = (*pcVar36)();
      sVar7 = strnlen1((char *)needle_00,sVar7);
                    /* WARNING: Subroutine does not return */
      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);
    }
LAB_0002ef3c:
    (**(code **)(iVar17 + -0x7bb0))
              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,
               *(int *)(iVar17 + -0x7fc8) + -0xd0);
    pmVar27 = (mbstate_t *)0xb2;
    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);
    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);
    (**(code **)(iVar17 + -0x7bb0))();
  }
  pcVar36 = *(code **)(iVar17 + -0x79d8);
  pcVar41 = mbsnwidth;
  (*pcVar36)();
  puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);
  pcVar40 = *(code **)(pcVar36 + 0x46bd8);
  *(undefined4 **)(puVar38 + -0x1bc) = puVar8;
  *(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;
  *(mbstate_t **)(puVar38 + -400) = unaff_s6;
  *(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;
  pbVar33 = s + (int)pmVar26;
  *(code **)(puVar38 + -0x184) = pcVar41;
  *(mbstate_t **)(puVar38 + -0x188) = ps;
  *(mbstate_t **)(puVar38 + -0x18c) = pwc;
  *(mbstate_t **)(puVar38 + -0x194) = unaff_s5;
  *(mbstate_t **)(puVar38 + -0x198) = unaff_s4;
  *(mbstate_t **)(puVar38 + -0x19c) = needle_00;
  *(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;
  *(uchar **)(puVar38 + -0x1a8) = haystack;
  *(mbstate_t **)(puVar38 + -0x178) = pmVar27;
  *(undefined4 *)(puVar38 + -0x1ac) = *puVar8;
  uVar6 = (*pcVar40)();
  iVar17 = *(int *)(puVar38 + -0x1c8);
  if (uVar6 < 2) {
    iVar10 = 0;
    if (s < pbVar33) {
      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();
      pmVar26 = (mbstate_t *)0x7fffffff;
      iVar17 = *(int *)(puVar38 + -0x1c8);
      do {
        pbVar34 = s + 1;
        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);
        if ((uVar2 & 0x40) == 0) {
          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {
            iVar10 = -1;
            goto LAB_0002f060;
          }
          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;
        }
        else {
LAB_0002f1dc:
          piVar22 = *(int **)(puVar38 + -0x1bc);
          if (iVar10 == 0x7fffffff) goto LAB_0002f064;
          iVar10 = iVar10 + 1;
        }
        s = pbVar34;
      } while (pbVar33 != pbVar34);
      piVar22 = *(int **)(puVar38 + -0x1bc);
      goto LAB_0002f064;
    }
  }
  else {
    iVar10 = 0;
    if (s < pbVar33) {
      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;
      do {
        iVar9 = (int)(char)*s;
        if (iVar9 < 0x40) {
          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {
code_r0x0002f044:
            *(undefined4 *)(puVar38 + -0x1b4) = 0;
            *(undefined4 *)(puVar38 + -0x1b0) = 0;
                    /* WARNING: Subroutine does not return */
            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,
                        (mbstate_t *)(puVar38 + -0x1b4));
          }
        }
        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))
        goto code_r0x0002f044;
        s = s + 1;
        iVar10 = iVar10 + 1;
      } while (s < pbVar33);
    }
  }
LAB_0002f060:
  piVar22 = *(int **)(puVar38 + -0x1bc);
LAB_0002f064:
  string = *(char **)(puVar38 + -0x1ac);
  if (string != (char *)*piVar22) {
    pcVar36 = *(code **)(iVar17 + -0x79d8);
    pcVar41 = gnu_mbswidth;
    (*pcVar36)();
    pcVar40 = *(code **)(pcVar36 + 0x468a8);
    *(byte **)(puVar38 + -0x1e0) = pbVar33;
    *(int *)(puVar38 + -0x1e4) = iVar10;
    *(code **)(puVar38 + -0x1dc) = pcVar41;
    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;
    sVar7 = (*pcVar40)();
    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);
    return SUB41(iVar17,0);
  }
  return SUB41(iVar10,0);
}



byte * FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)

{
  ushort uVar1;
  bool bVar2;
  undefined4 *puVar3;
  byte *pbVar4;
  uint uVar5;
  byte *pbVar6;
  uint uVar7;
  undefined4 *puVar8;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  char cVar14;
  undefined4 *puVar12;
  int *piVar13;
  int iVar15;
  byte bVar20;
  undefined4 uVar16;
  byte *pbVar17;
  undefined4 *puVar18;
  int *piVar19;
  byte *pbVar21;
  undefined4 *puVar22;
  byte *pbVar23;
  byte *pbVar24;
  undefined4 uVar25;
  byte *pbVar26;
  uint *puVar27;
  byte *pbVar28;
  byte *pbVar29;
  char *pcVar30;
  byte *pbVar31;
  int unaff_s2;
  undefined1 *unaff_s3;
  byte *unaff_s4;
  byte *unaff_s5;
  byte *unaff_s6;
  undefined4 unaff_s7;
  undefined *puVar32;
  code *pcVar33;
  undefined1 *puVar34;
  undefined1 *puVar35;
  undefined1 *puVar36;
  undefined1 *puVar37;
  undefined1 *puVar38;
  undefined1 *puVar39;
  code *pcVar40;
  undefined4 uVar41;
  code *pcVar42;
  byte *pbVar43;
  undefined1 auStack_38 [16];
  undefined4 local_1c;
  int local_14;
  
  pbVar28 = PTR___stack_chk_guard_00075be8;
  puVar34 = auStack_38;
  uVar5 = param_3 * 4;
  local_14 = *(int *)PTR___stack_chk_guard_00075be8;
  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {
LAB_0002d620:
    pbVar6 = (byte *)0x0;
  }
  else {
    if (uVar5 < 0xfb1) {
      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);
      puVar34 = auStack_38 + iVar15;
      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;
      pbVar6 = (byte *)0x0;
      puVar36 = auStack_38 + iVar15;
      if (uVar5 == 0) goto LAB_0002d5c8;
    }
    else {
      local_1c = param_2;
      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);
      param_2 = local_1c;
      puVar36 = auStack_38;
      if (uVar5 == 0) goto LAB_0002d620;
    }
    puVar34 = puVar36;
    *(undefined4 *)(uVar5 + 4) = 1;
    if (2 < param_3) {
      puVar27 = (uint *)(uVar5 + 8);
      iVar15 = 0;
      uVar7 = 2;
      do {
        cVar14 = *(char *)(param_2 + iVar15);
        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {
          if (iVar15 == 0) {
            iVar15 = 0;
            *puVar27 = uVar7;
            goto LAB_0002d564;
          }
          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);
          cVar14 = *(char *)(param_2 + iVar15);
        }
        iVar15 = iVar15 + 1;
        *puVar27 = uVar7 - iVar15;
LAB_0002d564:
        uVar7 = uVar7 + 1;
        puVar27 = puVar27 + 1;
      } while (param_3 != uVar7);
    }
    *param_4 = 0;
    uVar7 = 0;
    bVar20 = *param_1;
    pbVar6 = param_1;
LAB_0002d580:
    if (bVar20 != 0) {
      while (*(byte *)(param_2 + uVar7) != bVar20) {
        if (uVar7 == 0) {
          bVar20 = pbVar6[1];
          param_1 = param_1 + 1;
          pbVar6 = pbVar6 + 1;
          goto LAB_0002d580;
        }
        iVar15 = *(int *)(uVar5 + uVar7 * 4);
        param_1 = param_1 + iVar15;
        uVar7 = uVar7 - iVar15;
        if (bVar20 == 0) goto LAB_0002d5b8;
      }
      uVar7 = uVar7 + 1;
      if (param_3 == uVar7) {
        *param_4 = param_1;
        goto LAB_0002d5b8;
      }
      bVar20 = pbVar6[1];
      pbVar6 = pbVar6 + 1;
      goto LAB_0002d580;
    }
LAB_0002d5b8:
    (*(code *)PTR_freea_000758e0)();
    pbVar6 = (byte *)0x1;
  }
LAB_0002d5c8:
  if (local_14 == *(int *)pbVar28) {
    return pbVar6;
  }
  pcVar40 = FUN_0002d670;
  puVar32 = PTR___stack_chk_fail_00075ba8;
  (*(code *)PTR___stack_chk_fail_00075ba8)();
  pbVar24 = &DAT_000000b3;
  iVar15 = *(int *)(puVar32 + 0x47f48);
  pcVar33 = *(code **)(puVar32 + 0x48360);
  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);
  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;
  *(code **)(puVar34 + -4) = pcVar40;
  uVar41 = 0x2d6ac;
  iVar15 = iVar15 + -0x114;
  (*pcVar33)();
  puVar35 = puVar34 + -0x128;
  puVar38 = puVar34 + -0x128;
  puVar39 = puVar34 + -0x128;
  puVar37 = puVar34 + -0x128;
  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);
  pcVar40 = *(code **)(pcVar33 + 0x48238);
  *(undefined1 **)(puVar34 + -0x28) = auStack_38;
  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;
  *(undefined4 **)(puVar34 + -0x10c) = puVar8;
  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;
  *(int *)(puVar34 + -0x108) = iVar15;
  *(undefined4 *)(puVar34 + -0x24) = uVar41;
  *(byte **)(puVar34 + -0x30) = unaff_s6;
  *(byte **)(puVar34 + -0x34) = unaff_s5;
  *(byte **)(puVar34 + -0x38) = unaff_s4;
  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;
  *(int *)(puVar34 + -0x40) = unaff_s2;
  *(byte **)(puVar34 + -0x44) = pbVar28;
  *(byte **)(puVar34 + -0x48) = param_1;
  *(byte **)(puVar34 + -0x110) = pbVar24;
  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;
  pbVar6 = pbVar23;
  uVar5 = (*pcVar40)(pbVar23);
  iVar15 = *(int *)(puVar34 + -0x118);
  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);
  *(uint *)(puVar34 + -0x104) = uVar5;
  puVar36 = puVar34 + -0x128;
  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&
     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {
    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {
      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);
      puVar35 = puVar34 + iVar9 + -0x128;
      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);
    }
    else {
      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();
      iVar15 = *(int *)(puVar34 + -0x118);
    }
    pbVar24 = pbVar43;
    puVar36 = puVar35;
    if (param_1 != (byte *)0x0) {
      unaff_s3 = puVar34 + -0xf0;
      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);
      *(undefined4 *)(puVar34 + -0xf0) = 0;
      unaff_s2 = 1;
      *(undefined4 *)(puVar34 + -0xec) = 0;
      *(undefined4 *)(puVar34 + -0x100) = uVar41;
      unaff_s6 = puVar34 + -0xd8;
      *(byte **)(puVar34 + -0xe4) = pbVar23;
      puVar34[-0xf4] = 0;
      unaff_s5 = puVar34 + -0xd4;
      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);
      puVar34[-0xe8] = 0;
      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;
      unaff_s4 = param_1;
      do {
        if (puVar34[-0xf4] == '\0') {
          pbVar6 = (byte *)(uint)*pbVar23;
          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>
               ((uint)pbVar6 & 0x1f) & 1) == 0) {
            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);
            iVar15 = *(int *)(puVar34 + -0x118);
            if (iVar9 != 0) {
              puVar34[-0xf4] = 1;
              goto LAB_0002d840;
            }
            goto LAB_0002e0bc;
          }
          *(undefined4 *)(puVar34 + -0xe0) = 1;
          pbVar28 = (byte *)(int)(char)*pbVar23;
          puVar34[-0xdc] = 1;
          puVar34[-0xe8] = 1;
          *(byte **)(puVar34 + -0xd8) = pbVar28;
          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;
LAB_0002d7f8:
          bVar20 = 1;
        }
        else {
LAB_0002d840:
          uVar41 = (**(code **)(iVar15 + -0x7a18))();
          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);
          pbVar6 = pbVar23;
          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);
          iVar15 = *(int *)(puVar34 + -0x118);
          *(int *)(puVar34 + -0xe0) = iVar9;
          if (iVar9 == -1) {
            *(undefined4 *)(puVar34 + -0xe0) = 1;
            bVar20 = 0;
            puVar34[-0xdc] = 0;
            puVar34[-0xe8] = 1;
          }
          else {
            if (iVar9 != -2) {
              if (iVar9 == 0) {
                *(undefined4 *)(puVar34 + -0xe0) = 1;
                pbVar28 = *(byte **)(puVar34 + -0xd8);
                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;
                if (pbVar28 != (byte *)0x0) {
                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);
                  goto LAB_0002dc58;
                }
              }
              else {
                pbVar28 = *(byte **)(puVar34 + -0xd8);
              }
              pcVar33 = *(code **)(iVar15 + -0x799c);
              pbVar23 = (byte *)0x1;
              puVar34[-0xdc] = 1;
              iVar9 = (*pcVar33)(unaff_s3);
              iVar15 = *(int *)(puVar34 + -0x118);
              if (iVar9 != 0) {
                puVar34[-0xf4] = 0;
              }
              puVar34[-0xe8] = 1;
              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;
              goto LAB_0002d8cc;
            }
            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));
            iVar15 = *(int *)(puVar34 + -0x118);
            *(undefined4 *)(puVar34 + -0xe0) = uVar41;
            bVar20 = 0;
            puVar34[-0xdc] = 0;
            puVar34[-0xe8] = 1;
          }
        }
        pbVar43 = *(byte **)(puVar34 + -0xe0);
        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {
          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);
          iVar15 = *(int *)(puVar34 + -0x118);
          bVar20 = puVar34[-0xdc];
          pbVar43 = *(byte **)(puVar34 + -0xe0);
          *(undefined4 *)unaff_s4 = uVar41;
        }
        else {
          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);
        }
        *(byte **)(unaff_s4 + 4) = pbVar43;
        unaff_s4[8] = bVar20;
        if (bVar20 != 0) {
          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);
        }
        unaff_s4 = unaff_s4 + 0x28;
        puVar34[-0xe8] = 0;
        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);
        *(byte **)(puVar34 + -0xe4) = pbVar23;
      } while( true );
    }
  }
  pbVar43 = (byte *)0x0;
LAB_0002db5c:
  pbVar10 = *(byte **)(puVar34 + -0x4c);
  pcVar33 = *(code **)(iVar15 + -0x79d8);
  puVar35 = puVar36;
  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {
    return pbVar43;
  }
  goto LAB_0002e0e0;
LAB_0002d8cc:
  uVar5 = *(uint *)(puVar34 + -0x104);
  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;
  if (uVar5 < 3) {
LAB_0002d988:
    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);
    unaff_s4 = puVar34 + -0xb8;
    uVar16 = *(undefined4 *)(puVar34 + -0x108);
    unaff_s6 = puVar34 + -0x80;
    unaff_s2 = 0;
    *(undefined4 *)(puVar34 + -0xb8) = 0;
    *(undefined4 *)(puVar34 + -0x100) = uVar41;
    unaff_s3 = puVar34 + -0x68;
    unaff_s5 = puVar34 + -0xa0;
    *(undefined4 *)(puVar34 + -0xb4) = 0;
    *(undefined4 *)(puVar34 + -0x80) = 0;
    *(undefined4 *)(puVar34 + -0xac) = uVar16;
    **(undefined4 **)(puVar34 + -0x110) = 0;
    cVar14 = '\0';
    *(undefined4 *)(puVar34 + -0x7c) = 0;
    puVar34[-0xbc] = 0;
    puVar34[-0xb0] = 0;
    *(undefined4 *)(puVar34 + -0x74) = uVar16;
    puVar34[-0x84] = 0;
    puVar34[-0x78] = 0;
    pbVar24 = pbVar43;
joined_r0x0002d9dc:
    if (cVar14 == '\0') {
      pbVar23 = *(byte **)(puVar34 + -0x74);
      goto LAB_0002daa0;
    }
    iVar9 = *(int *)(puVar34 + -0x68);
    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;
LAB_0002d9f0:
    iVar11 = unaff_s2 * 4;
    pbVar43 = param_1 + unaff_s2 * 0x28;
LAB_0002da00:
    pbVar28 = *(byte **)(puVar34 + -0x70);
    pbVar24 = pbVar28;
    if (*(byte **)(pbVar43 + 4) == pbVar28) {
      pbVar23 = *(byte **)(puVar34 + -0x74);
      pcVar33 = *(code **)(iVar15 + -0x79c0);
      uVar41 = *(undefined4 *)pbVar43;
      *(int *)(puVar34 + -0x108) = iVar11;
      pbVar6 = pbVar23;
      iVar9 = (*pcVar33)(uVar41);
      iVar15 = *(int *)(puVar34 + -0x118);
      iVar11 = *(int *)(puVar34 + -0x108);
      if (iVar9 == 0) goto LAB_0002db1c;
      cVar14 = puVar34[-0xb0];
      if (unaff_s2 == 0) goto LAB_0002da1c;
      iVar9 = *(int *)(puVar34 + -0xfc);
    }
    else {
LAB_0002da10:
      iVar9 = *(int *)(puVar34 + -0xfc);
      if (unaff_s2 == 0) {
        cVar14 = puVar34[-0xb0];
LAB_0002da1c:
        if (cVar14 == '\0') {
          pbVar6 = *(byte **)(puVar34 + -0xac);
          if (puVar34[-0xbc] == '\0') {
            bVar20 = *pbVar6;
            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)
                & 1) != 0) {
              *(undefined4 *)(puVar34 + -0xa8) = 1;
              pbVar28 = (byte *)(int)(char)*pbVar6;
              puVar34[-0xa4] = 1;
              puVar34[-0xb0] = 1;
              *(byte **)(puVar34 + -0xa0) = pbVar28;
              pbVar6 = (byte *)(uint)bVar20;
              goto LAB_0002da70;
            }
            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);
            iVar15 = *(int *)(puVar34 + -0x118);
            pbVar28 = pbVar6;
            if (iVar9 == 0) goto LAB_0002e0bc;
            puVar34[-0xbc] = 1;
          }
          uVar41 = (**(code **)(iVar15 + -0x7a18))();
          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);
          iVar15 = *(int *)(puVar34 + -0x118);
          *(int *)(puVar34 + -0xa8) = iVar9;
          if (iVar9 == -1) {
            pbVar28 = *(byte **)(puVar34 + -0xac);
            puVar34[-0xa4] = 0;
            *(undefined4 *)(puVar34 + -0xa8) = 1;
            goto LAB_0002da7c;
          }
          pbVar28 = *(byte **)(puVar34 + -0xac);
          if (iVar9 == -2) {
            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);
            iVar15 = *(int *)(puVar34 + -0x118);
            *(undefined4 *)(puVar34 + -0xa8) = uVar41;
            puVar34[-0xa4] = 0;
            goto LAB_0002da7c;
          }
          if (iVar9 == 0) {
            *(undefined4 *)(puVar34 + -0xa8) = 1;
            bVar20 = *pbVar28;
            pbVar28 = *(byte **)(puVar34 + -0xa0);
            if (bVar20 != 0) goto LAB_0002e098;
            if (pbVar28 != (byte *)0x0) {
              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);
              goto LAB_0002dc58;
            }
          }
          else {
            pbVar28 = *(byte **)(puVar34 + -0xa0);
          }
          pcVar33 = *(code **)(iVar15 + -0x799c);
          pbVar23 = (byte *)0x1;
          puVar34[-0xa4] = 1;
          iVar9 = (*pcVar33)(unaff_s4);
          iVar15 = *(int *)(puVar34 + -0x118);
          if (iVar9 != 0) {
            puVar34[-0xbc] = 0;
          }
          puVar34[-0xb0] = 1;
LAB_0002da70:
          pcVar33 = *(code **)(iVar15 + -0x7b80);
          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;
        }
        else {
          pbVar28 = *(byte **)(puVar34 + -0xa0);
          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;
        }
        pbVar28 = *(byte **)(puVar34 + -0xac);
LAB_0002da7c:
        puVar34[-0xb0] = 0;
        puVar34[-0x78] = 0;
        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);
        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));
        *(byte **)(puVar34 + -0x74) = pbVar23;
LAB_0002daa0:
        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;
        pcVar33 = *(code **)(iVar15 + -0x799c);
        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)
            & 1) == 0) {
          while( true ) {
            iVar9 = (*pcVar33)(unaff_s6);
            iVar15 = *(int *)(puVar34 + -0x118);
            if (iVar9 == 0) goto LAB_0002e0bc;
            puVar34[-0x84] = 1;
LAB_0002dc78:
            uVar41 = (**(code **)(iVar15 + -0x7a18))();
            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);
            pbVar6 = pbVar23;
            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);
            iVar15 = *(int *)(puVar34 + -0x118);
            *(int *)(puVar34 + -0x70) = iVar9;
            if (iVar9 == -1) goto LAB_0002df14;
            if (iVar9 == -2) {
              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));
              iVar15 = *(int *)(puVar34 + -0x118);
              *(undefined4 *)(puVar34 + -0x70) = uVar41;
              puVar34[-0x6c] = 0;
              puVar34[-0x78] = 1;
              goto LAB_0002d9f0;
            }
            pbVar23 = *(byte **)(puVar34 + -0x74);
            if (iVar9 != 0) break;
            *(undefined4 *)(puVar34 + -0x70) = 1;
            iVar9 = *(int *)(puVar34 + -0x68);
            if (*pbVar23 != 0) goto LAB_0002e098;
            if (iVar9 == 0) goto LAB_0002dcdc;
            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);
LAB_0002dc58:
            FUN_0002d670();
          }
          iVar9 = *(int *)(puVar34 + -0x68);
LAB_0002dcdc:
          pcVar33 = *(code **)(iVar15 + -0x799c);
          pbVar23 = (byte *)0x1;
          *(int *)(puVar34 + -0x108) = iVar9;
          puVar34[-0x6c] = 1;
          iVar11 = (*pcVar33)(unaff_s6);
          iVar15 = *(int *)(puVar34 + -0x118);
          iVar9 = *(int *)(puVar34 + -0x108);
          if (iVar11 != 0) {
            puVar34[-0x84] = 0;
          }
          puVar34[-0x78] = 1;
        }
        else {
          *(undefined4 *)(puVar34 + -0x70) = 1;
          iVar9 = (int)(char)*pbVar23;
          puVar34[-0x6c] = 1;
          puVar34[-0x78] = 1;
          *(int *)(puVar34 + -0x68) = iVar9;
        }
LAB_0002dae8:
        iVar11 = unaff_s2 * 4;
        if (iVar9 == 0) goto LAB_0002db40;
        pbVar43 = param_1 + unaff_s2 * 0x28;
        if (pbVar43[8] == 0) goto LAB_0002da00;
        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;
        goto LAB_0002da10;
      }
    }
    pbVar23 = *(byte **)(iVar9 + iVar11);
    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;
    if (pbVar23 != (byte *)0x0) {
      if (puVar34[-0xb0] != '\0') {
        pbVar28 = *(byte **)(puVar34 + -0xa0);
        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;
        goto LAB_0002dd64;
      }
      pbVar28 = *(byte **)(puVar34 + -0xac);
LAB_0002dd80:
      pbVar6 = pbVar28;
      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;
      pbVar6 = (byte *)(uint)*pbVar28;
      pcVar33 = *(code **)(iVar15 + -0x799c);
      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>
           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;
      *(undefined4 *)(puVar34 + -0xa8) = 1;
      pbVar28 = (byte *)(int)(char)*pbVar28;
      puVar34[-0xa4] = 1;
      puVar34[-0xb0] = 1;
      *(byte **)(puVar34 + -0xa0) = pbVar28;
LAB_0002ddcc:
      pcVar33 = *(code **)(iVar15 + -0x7b80);
      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;
LAB_0002ddd4:
      (*pcVar33)();
LAB_0002dddc:
      iVar9 = (*pcVar33)(unaff_s4);
      iVar15 = *(int *)(puVar34 + -0x118);
      if (iVar9 == 0) goto LAB_0002e0bc;
      puVar34[-0xbc] = 1;
      pbVar6 = pbVar28;
LAB_0002ddf4:
      uVar41 = (**(code **)(iVar15 + -0x7a18))();
      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);
      iVar15 = *(int *)(puVar34 + -0x118);
      *(int *)(puVar34 + -0xa8) = iVar9;
      if (iVar9 == -1) {
        puVar34[-0xa4] = 0;
        *(undefined4 *)(puVar34 + -0xa8) = 1;
        puVar34[-0xb0] = 0;
        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));
        *(byte **)(puVar34 + -0xac) = pbVar28;
        goto joined_r0x0002dea0;
      }
      pcVar30 = *(char **)(puVar34 + -0xac);
      if (iVar9 == -2) {
        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);
        iVar15 = *(int *)(puVar34 + -0x118);
        *(undefined4 *)(puVar34 + -0xa8) = uVar41;
        puVar34[-0xa4] = 0;
        goto LAB_0002dd68;
      }
      if (iVar9 == 0) {
        *(undefined4 *)(puVar34 + -0xa8) = 1;
        pbVar28 = *(byte **)(puVar34 + -0xa0);
        if (*pcVar30 != '\0') goto LAB_0002e098;
        pcVar33 = *(code **)(iVar15 + -0x799c);
        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;
      }
      else {
        pbVar28 = *(byte **)(puVar34 + -0xa0);
        pcVar33 = *(code **)(iVar15 + -0x799c);
      }
      unaff_s2 = 1;
      puVar34[-0xa4] = 1;
      iVar9 = (*pcVar33)(unaff_s4);
      iVar15 = *(int *)(puVar34 + -0x118);
      if (iVar9 != 0) {
        puVar34[-0xbc] = 0;
      }
      puVar34[-0xb0] = 1;
      goto LAB_0002ddcc;
    }
    cVar14 = puVar34[-0x78];
    goto joined_r0x0002d9dc;
  }
  iVar9 = 0;
  pbVar23 = (byte *)0x2;
  pbVar24 = param_1;
LAB_0002d8f0:
  pbVar28 = (byte *)(uint)pbVar24[0x30];
  do {
    pbVar10 = param_1 + iVar9 * 0x28;
    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {
      pbVar43 = *(byte **)(pbVar24 + 0x2c);
      if (pbVar43 == *(byte **)(pbVar10 + 4)) {
        pbVar6 = *(byte **)pbVar10;
        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));
        iVar15 = *(int *)(puVar34 + -0x118);
        if (iVar11 == 0) {
          iVar11 = *(int *)(puVar34 + -0xfc);
          goto LAB_0002d964;
        }
      }
    }
    else {
      iVar11 = *(int *)(puVar34 + -0xfc);
      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {
LAB_0002d964:
        iVar9 = iVar9 + 1;
        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;
        goto LAB_0002d978;
      }
    }
    if (iVar9 == 0) break;
    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);
  } while( true );
  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;
LAB_0002d978:
  pbVar23 = pbVar23 + 1;
  pbVar24 = pbVar24 + 0x28;
  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;
  goto LAB_0002d8f0;
code_r0x0002db14:
  pbVar28 = *(byte **)(puVar34 + -0x70);
  pbVar23 = *(byte **)(puVar34 + -0x74);
LAB_0002db1c:
  pbVar23 = pbVar23 + (int)pbVar28;
  unaff_s2 = unaff_s2 + 1;
  puVar34[-0x78] = 0;
  *(byte **)(puVar34 + -0x74) = pbVar23;
  if (*(int *)(puVar34 + -0x104) == unaff_s2) {
    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);
LAB_0002db40:
    (**(code **)(iVar15 + -0x7ca0))(param_1);
    pbVar43 = (byte *)0x1;
    iVar15 = *(int *)(puVar34 + -0x118);
    goto LAB_0002db5c;
  }
  goto LAB_0002daa0;
LAB_0002dd64:
  pcVar30 = *(char **)(puVar34 + -0xac);
LAB_0002dd68:
  puVar34[-0xb0] = 0;
  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));
  *(byte **)(puVar34 + -0xac) = pbVar28;
joined_r0x0002dea0:
  pbVar23 = pbVar23 + -1;
  if (pbVar23 == (byte *)0x0) {
    cVar14 = puVar34[-0x78];
    unaff_s2 = *(int *)(puVar34 + -0x108);
    goto joined_r0x0002d9dc;
  }
  goto LAB_0002dd80;
code_r0x0002def0:
  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);
  (**(code **)(iVar15 + -0x7bb0))
            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);
LAB_0002df14:
  puVar34[-0x6c] = 0;
  *(undefined4 *)(puVar34 + -0x70) = 1;
  puVar34[-0x78] = 1;
  goto LAB_0002d9f0;
LAB_0002e6c8:
  iVar9 = *(int *)(puVar35 + -0xc4);
LAB_0002e6cc:
  unaff_s5 = *(byte **)(puVar35 + -0xc0);
LAB_0002e6d0:
  pbVar29 = unaff_s5 + iVar9;
  puVar35[-200] = 0;
  *(byte **)(puVar35 + -0xc4) = pbVar29;
  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;
  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;
  goto LAB_0002e6f4;
LAB_0002ef34:
  pbVar31 = *(byte **)(puVar35 + -0x148);
  goto LAB_0002e2ac;
LAB_0002f210:
  pbVar6 = (byte *)0xffffffff;
  goto LAB_0002f060;
LAB_0002e098:
  (**(code **)(iVar15 + -0x7bb0))
            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,
             *(int *)(iVar15 + -0x7fc8) + -0xd0);
LAB_0002e0bc:
  pbVar24 = &DAT_00000096;
  pcVar33 = *(code **)(iVar15 + -0x7bb0);
  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);
  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);
  (*pcVar33)();
LAB_0002e0e0:
  pcVar42 = mbsstr;
  (*pcVar33)();
  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);
  pcVar40 = *(code **)(pcVar33 + 0x47a80);
  *(undefined4 **)(puVar35 + -0x154) = puVar8;
  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;
  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;
  *(int *)(puVar35 + -0x20) = unaff_s2;
  *(code **)(puVar35 + -4) = pcVar42;
  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;
  *(byte **)(puVar35 + -0xc) = pbVar23;
  *(byte **)(puVar35 + -0x10) = unaff_s6;
  *(byte **)(puVar35 + -0x14) = unaff_s5;
  *(byte **)(puVar35 + -0x18) = unaff_s4;
  *(byte **)(puVar35 + -0x24) = pbVar28;
  *(byte **)(puVar35 + -0x28) = param_1;
  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;
  pbVar43 = pbVar6;
  uVar5 = (*pcVar40)();
  iVar15 = *(int *)(puVar35 + -0x170);
  pbVar31 = pbVar10;
  if (uVar5 < 2) {
    unaff_s6 = (byte *)(int)(char)*pbVar6;
    pbVar29 = pbVar28;
    puVar37 = puVar34 + -0x128;
    if (unaff_s6 != (byte *)0x0) {
      pbVar29 = pbVar6 + 1;
      puVar37 = puVar34 + -0x128;
      if (*pbVar10 != 0) {
        pbVar23 = (byte *)0x0;
        unaff_s5 = (byte *)0x0;
        iVar9 = 1;
        puVar37 = puVar35 + -0x148;
        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);
        pbVar28 = pbVar6;
        pbVar26 = pbVar10;
        pbVar4 = (byte *)0x0;
LAB_0002e18c:
        do {
          unaff_s4 = pbVar4;
          pbVar31 = pbVar26;
          pbVar10 = pbVar31;
          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&
             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {
            *(int *)(puVar35 + -0x168) = iVar9;
            if (pbVar28 != (byte *)0x0) {
              pcVar33 = *(code **)(iVar15 + -0x7af4);
              pbVar43 = unaff_s4 + -(int)pbVar23;
              *(byte **)(puVar35 + -0x164) = pbVar28;
              iVar9 = (*pcVar33)(pbVar28);
              iVar15 = *(int *)(puVar35 + -0x170);
              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);
              iVar9 = *(int *)(puVar35 + -0x168);
              pbVar23 = unaff_s4;
              if (*pbVar28 != 0) goto LAB_0002e218;
            }
            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);
            pbVar43 = pbVar6;
            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);
            iVar15 = *(int *)(puVar35 + -0x170);
            if (iVar9 != 0) goto LAB_0002ef34;
            pbVar28 = (byte *)0x0;
            iVar9 = 0;
          }
LAB_0002e218:
          unaff_s5 = unaff_s5 + 1;
          pbVar26 = pbVar31 + 1;
          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {
            if (pbVar6[1] == 0) goto LAB_0002e2ac;
            if (*pbVar26 == 0) break;
            pbVar4 = unaff_s4 + 2;
            if (pbVar6[1] == *pbVar26) {
              pbVar17 = pbVar6 + 2;
              pbVar21 = pbVar26;
              do {
                pbVar43 = (byte *)(int)(char)*pbVar17;
                pbVar21 = pbVar21 + 1;
                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;
                pbVar24 = (byte *)(int)(char)*pbVar21;
                pbVar17 = pbVar17 + 1;
                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;
                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);
              } while (pbVar43 == pbVar24);
            }
            goto LAB_0002e18c;
          }
          pbVar4 = unaff_s4 + 1;
        } while (pbVar31[1] != 0);
      }
LAB_0002e2ec:
      pbVar31 = (byte *)0x0;
    }
LAB_0002e2ac:
    pbVar28 = *(byte **)(puVar35 + -0x2c);
    puVar39 = puVar37;
    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {
      return pbVar31;
    }
  }
  else {
    bVar20 = *pbVar6;
    pbVar29 = (byte *)(int)(char)bVar20;
    param_1 = puVar35 + -0x140;
    iVar9 = *(int *)(iVar15 + -0x7c98);
    *(undefined4 *)(puVar35 + -0x140) = 0;
    pbVar43 = (byte *)(uint)bVar20;
    *(undefined4 *)(puVar35 + -0x13c) = 0;
    *(int *)(puVar35 + -0x168) = iVar9;
    *(byte **)(puVar35 + -0x134) = pbVar6;
    puVar35[-0x144] = 0;
    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);
    puVar35[-0x138] = 0;
    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {
      *(byte **)(puVar35 + -0x128) = pbVar29;
      *(undefined4 *)(puVar35 + -0x130) = 1;
      puVar35[-300] = 1;
      puVar35[-0x138] = 1;
LAB_0002e2a0:
      if (pbVar29 != (byte *)0x0) {
LAB_0002e360:
        puVar35[-0xd4] = 0;
        unaff_s4 = puVar35 + -0x108;
        *(undefined4 *)(puVar35 + -0x108) = 0;
        *(undefined4 *)(puVar35 + -0x15c) = 1;
        puVar37 = puVar35 + -0xd0;
        *(undefined4 *)(puVar35 + -0xd0) = 0;
        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;
        param_1 = (byte *)0x0;
        iVar9 = *(int *)(iVar15 + -32000);
        pbVar23 = puVar35 + -0x80;
        *(undefined4 *)(puVar35 + -0x104) = 0;
        *(undefined4 *)(puVar35 + -0xcc) = 0;
        *(byte **)(puVar35 + -0xfc) = pbVar6;
        *(undefined4 *)(puVar35 + -0x160) = 0;
        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;
        puVar35[-0x10c] = 0;
        *(undefined4 *)(puVar35 + -0x150) = 0;
        puVar35[-0x100] = 0;
        *(byte **)(puVar35 + -0xc4) = pbVar10;
        puVar35[-200] = 0;
        pbVar29 = pbVar10;
        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;
LAB_0002e3c4:
        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)
            & 1) != 0) {
          *(undefined4 *)(puVar35 + -0xc0) = 1;
          pbVar29 = (byte *)(int)(char)*pbVar29;
          puVar35[-0xbc] = 1;
          puVar35[-200] = 1;
          *(byte **)(puVar35 + -0xb8) = pbVar29;
          goto LAB_0002e404;
        }
        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);
        iVar15 = *(int *)(puVar35 + -0x170);
        puVar38 = puVar37;
        if (iVar9 != 0) {
          puVar35[-0xd4] = 1;
LAB_0002e6f4:
          uVar41 = (**(code **)(iVar15 + -0x7a18))();
          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);
          pbVar43 = pbVar29;
          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);
          iVar15 = *(int *)(puVar35 + -0x170);
          *(int *)(puVar35 + -0xc0) = iVar9;
          if (iVar9 == -1) {
            puVar35[-0xbc] = 0;
            *(undefined4 *)(puVar35 + -0xc0) = 1;
            puVar35[-200] = 1;
          }
          else {
            if (iVar9 != -2) {
              if (iVar9 == 0) {
                *(undefined4 *)(puVar35 + -0xc0) = 1;
                pbVar29 = *(byte **)(puVar35 + -0xb8);
                puVar39 = puVar37;
                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;
                if (pbVar29 != (byte *)0x0) {
LAB_0002ed10:
                  FUN_0002d670();
LAB_0002ed18:
                  pcVar30 = *(char **)(puVar35 + -0x54);
                  puVar35[-0x4c] = 0;
                  *(undefined4 *)(puVar35 + -0x50) = 1;
                  puVar37 = puVar39;
LAB_0002e51c:
                  unaff_s5 = puVar35 + -0x48;
                  puVar35[-0x58] = 0;
                  unaff_s6 = puVar35 + -0x98;
                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));
                  *(byte **)(puVar35 + -0x54) = pbVar43;
                  do {
                    param_1 = param_1 + 1;
                    puVar39 = puVar37;
                    puVar38 = puVar37;
                    if (puVar35[-100] == '\0') {
                      bVar20 = *pbVar43;
                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>
                           (bVar20 & 0x1f) & 1) == 0) {
                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));
                        iVar15 = *(int *)(puVar35 + -0x170);
                        pbVar29 = pbVar43;
                        if (iVar9 != 0) {
                          puVar35[-100] = 1;
                          goto LAB_0002e630;
                        }
                        goto LAB_0002ef3c;
                      }
                      *(undefined4 *)(puVar35 + -0x50) = 1;
                      pbVar29 = (byte *)(int)(char)*pbVar43;
                      puVar35[-0x4c] = 1;
                      puVar35[-0x58] = 1;
                      *(byte **)(puVar35 + -0x48) = pbVar29;
                      pbVar43 = (byte *)(uint)bVar20;
joined_r0x0002e574:
                      if (pbVar29 == (byte *)0x0) {
                        pbVar31 = *(byte **)(puVar35 + -0xc4);
                        pbVar29 = (byte *)0x0;
                        goto LAB_0002e2ac;
                      }
                    }
                    else {
LAB_0002e630:
                      uVar41 = (**(code **)(iVar15 + -0x7a18))();
                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);
                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)
                                         );
                      iVar15 = *(int *)(puVar35 + -0x170);
                      *(int *)(puVar35 + -0x50) = iVar9;
                      if (iVar9 == -1) {
                        puVar35[-0x4c] = 0;
                        *(undefined4 *)(puVar35 + -0x50) = 1;
                        puVar35[-0x58] = 1;
                      }
                      else {
                        if (iVar9 != -2) {
                          if (iVar9 == 0) {
                            *(undefined4 *)(puVar35 + -0x50) = 1;
                            pbVar29 = *(byte **)(puVar35 + -0x48);
                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;
                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
                          }
                          else {
                            pbVar29 = *(byte **)(puVar35 + -0x48);
                          }
                          pcVar33 = *(code **)(iVar15 + -0x799c);
                          puVar35[-0x4c] = 1;
                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));
                          pbVar43 = (byte *)0x1;
                          iVar15 = *(int *)(puVar35 + -0x170);
                          if (iVar9 != 0) {
                            puVar35[-100] = 0;
                          }
                          puVar35[-0x58] = 1;
                          goto joined_r0x0002e574;
                        }
                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));
                        iVar15 = *(int *)(puVar35 + -0x170);
                        *(undefined4 *)(puVar35 + -0x50) = uVar41;
                        puVar35[-0x4c] = 0;
                        puVar35[-0x58] = 1;
                      }
                    }
                    if (puVar35[-0x90] == '\0') {
                      pbVar29 = *(byte **)(puVar35 + -0x8c);
                      if (puVar35[-0x9c] == '\0') {
                        pbVar43 = (byte *)(uint)*pbVar29;
                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>
                             ((uint)pbVar43 & 0x1f) & 1) != 0) {
                          *(undefined4 *)(puVar35 + -0x88) = 1;
                          pbVar29 = (byte *)(int)(char)*pbVar29;
                          puVar35[-0x84] = 1;
                          puVar35[-0x90] = 1;
                          *(byte **)(puVar35 + -0x80) = pbVar29;
                          goto LAB_0002e5d0;
                        }
                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);
                        iVar15 = *(int *)(puVar35 + -0x170);
                        if (iVar9 == 0) goto LAB_0002ef3c;
                        puVar35[-0x9c] = 1;
                      }
                      uVar41 = (**(code **)(iVar15 + -0x7a18))();
                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);
                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);
                      iVar15 = *(int *)(puVar35 + -0x170);
                      *(int *)(puVar35 + -0x88) = iVar9;
                      if (iVar9 == -1) {
                        puVar35[-0x84] = 0;
                        *(undefined4 *)(puVar35 + -0x88) = 1;
                        puVar35[-0x90] = 1;
                      }
                      else {
                        if (iVar9 != -2) {
                          if (iVar9 == 0) {
                            *(undefined4 *)(puVar35 + -0x88) = 1;
                            pbVar29 = *(byte **)(puVar35 + -0x80);
                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;
                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
                          }
                          else {
                            pbVar29 = *(byte **)(puVar35 + -0x80);
                          }
                          pcVar33 = *(code **)(iVar15 + -0x799c);
                          puVar35[-0x84] = 1;
                          iVar9 = (*pcVar33)(unaff_s6);
                          pbVar43 = (byte *)0x1;
                          iVar15 = *(int *)(puVar35 + -0x170);
                          if (iVar9 != 0) {
                            puVar35[-0x9c] = 0;
                          }
                          puVar35[-0x90] = 1;
                          goto LAB_0002e5d0;
                        }
                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));
                        iVar15 = *(int *)(puVar35 + -0x170);
                        *(undefined4 *)(puVar35 + -0x88) = uVar41;
                        puVar35[-0x84] = 0;
                        puVar35[-0x90] = 1;
                      }
                      pbVar24 = *(byte **)(puVar35 + -0x88);
                      pbVar43 = pbVar29;
LAB_0002e794:
                      iVar9 = *(int *)(puVar35 + -0xc4);
                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;
                      pbVar43 = *(byte **)(puVar35 + -0x54);
                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));
                      iVar15 = *(int *)(puVar35 + -0x170);
                      bVar2 = iVar9 != 0;
                    }
                    else {
                      pbVar24 = *(byte **)(puVar35 + -0x88);
                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;
                      pbVar29 = *(byte **)(puVar35 + -0x80);
LAB_0002e5d0:
                      pbVar31 = (byte *)0x0;
                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;
                      pbVar24 = *(byte **)(puVar35 + -0x88);
                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;
                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;
                    }
                    if (bVar2) goto LAB_0002e6c8;
                    puVar35[-0x90] = 0;
                    puVar35[-0x58] = 0;
                    *(int *)(puVar35 + -0x8c) =
                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);
                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));
                    *(byte **)(puVar35 + -0x54) = pbVar43;
                  } while( true );
                }
              }
              else {
                pbVar29 = *(byte **)(puVar35 + -0xb8);
              }
              pcVar33 = *(code **)(iVar15 + -0x799c);
              unaff_s5 = (byte *)0x1;
              puVar35[-0xbc] = 1;
              iVar9 = (*pcVar33)(puVar37);
              iVar15 = *(int *)(puVar35 + -0x170);
              if (iVar9 != 0) {
                puVar35[-0xd4] = 0;
              }
              puVar35[-200] = 1;
LAB_0002e404:
              pbVar31 = (byte *)0x0;
              if (pbVar29 != (byte *)0x0) {
                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {
                  param_1 = param_1 + 1;
                  goto LAB_0002e448;
                }
                uVar5 = *(uint *)(puVar35 + -0x15c);
                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;
                goto LAB_0002e438;
              }
              goto LAB_0002e2ac;
            }
            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));
            iVar15 = *(int *)(puVar35 + -0x170);
            *(undefined4 *)(puVar35 + -0xc0) = uVar41;
            puVar35[-0xbc] = 0;
            puVar35[-200] = 1;
          }
          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {
            param_1 = param_1 + 1;
            goto LAB_0002e898;
          }
          uVar5 = 0;
          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {
LAB_0002e9c8:
            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);
            if (unaff_s5 == (byte *)0x0) {
              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;
              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;
              pbVar29 = *(byte **)(puVar35 + -0xf0);
              goto LAB_0002ed78;
            }
            if (puVar35[-0x100] != '\0') {
              pbVar29 = *(byte **)(puVar35 + -0xf0);
              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;
              goto LAB_0002e9e8;
            }
            pbVar29 = *(byte **)(puVar35 + -0xfc);
            goto LAB_0002ea08;
          }
LAB_0002e438:
          *(undefined4 *)(puVar35 + -0x15c) = 1;
          do {
            param_1 = param_1 + 1;
            if (uVar5 == 0) {
LAB_0002e898:
              unaff_s5 = *(byte **)(puVar35 + -0xc0);
LAB_0002e89c:
              iVar9 = *(int *)(puVar35 + -0xc4);
              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;
              pbVar43 = *(byte **)(puVar35 + -0x134);
              pbVar24 = unaff_s5;
              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);
              iVar15 = *(int *)(puVar35 + -0x170);
              puVar39 = puVar37;
              if (iVar11 != 0) goto LAB_0002e6d0;
            }
            else {
LAB_0002e448:
              unaff_s5 = *(byte **)(puVar35 + -0xc0);
              if (puVar35[-300] == '\0') goto LAB_0002e89c;
              puVar39 = puVar37;
              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;
            }
            puVar8 = (undefined4 *)(puVar35 + -0xd4);
            puVar3 = (undefined4 *)(puVar35 + -0x9c);
            do {
              puVar18 = puVar3;
              puVar12 = puVar8 + 4;
              uVar41 = puVar8[3];
              uVar25 = puVar8[1];
              uVar16 = puVar8[2];
              *puVar18 = *puVar8;
              puVar18[1] = uVar25;
              puVar18[2] = uVar16;
              puVar18[3] = uVar41;
              puVar22 = *(undefined4 **)(puVar35 + -0x158);
              puVar8 = puVar12;
              puVar3 = puVar18 + 4;
            } while (puVar12 != puVar22);
            bVar20 = *pbVar6;
            pbVar29 = (byte *)(int)(char)bVar20;
            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;
            pbVar24 = (byte *)*puVar22;
            puVar18[5] = puVar22[1];
            puVar18[4] = pbVar24;
            puVar35[-0x90] = 0;
            *(byte **)(puVar35 + -0x54) = pbVar6;
            puVar35[-100] = 0;
            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);
            *(undefined4 *)(puVar35 + -0x60) = 0;
            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);
            *(undefined4 *)(puVar35 + -0x5c) = 0;
            puVar35[-0x58] = 0;
            puVar37 = puVar39;
            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {
              pbVar29 = *(byte **)(puVar35 + -0x164);
              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);
              iVar15 = *(int *)(puVar35 + -0x170);
              puVar38 = puVar39;
              if (iVar9 == 0) break;
              pcVar33 = *(code **)(iVar15 + -0x7a18);
              puVar35[-100] = 1;
              uVar41 = (*pcVar33)();
              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(int *)(puVar35 + -0x50) = iVar9;
              if (iVar9 == -1) goto LAB_0002ed18;
              pcVar30 = *(char **)(puVar35 + -0x54);
              if (iVar9 == -2) {
                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);
                iVar15 = *(int *)(puVar35 + -0x170);
                *(undefined4 *)(puVar35 + -0x50) = uVar41;
                puVar35[-0x4c] = 0;
                goto LAB_0002e51c;
              }
              if (iVar9 == 0) {
                *(undefined4 *)(puVar35 + -0x50) = 1;
                pbVar29 = *(byte **)(puVar35 + -0x48);
                if (*pcVar30 != '\0') goto LAB_0002ef60;
                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
              }
              else {
                pbVar29 = *(byte **)(puVar35 + -0x48);
              }
              pcVar33 = *(code **)(iVar15 + -0x799c);
              unaff_s6 = (byte *)0x1;
              puVar35[-0x4c] = 1;
              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));
              iVar15 = *(int *)(puVar35 + -0x170);
              if (iVar9 != 0) {
                puVar35[-100] = 0;
              }
              puVar35[-0x58] = 1;
            }
            else {
              *(byte **)(puVar35 + -0x48) = pbVar29;
              *(undefined4 *)(puVar35 + -0x50) = 1;
              puVar35[-0x4c] = 1;
              puVar35[-0x58] = 1;
            }
            if (pbVar29 != (byte *)0x0) {
              pcVar30 = *(char **)(puVar35 + -0x54);
              goto LAB_0002e51c;
            }
            pcVar33 = *(code **)(iVar15 + -0x7b80);
            (*pcVar33)();
            pbVar29 = (byte *)0x0;
LAB_0002eb80:
            iVar9 = (*pcVar33)(unaff_s4);
            iVar15 = *(int *)(puVar35 + -0x170);
            puVar38 = puVar39;
            if (iVar9 == 0) break;
            puVar35[-0x10c] = 1;
            puVar37 = puVar39;
LAB_0002eb98:
            pbVar43 = pbVar29;
            uVar41 = (**(code **)(iVar15 + -0x7a18))();
            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);
            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);
            iVar15 = *(int *)(puVar35 + -0x170);
            *(int *)(puVar35 + -0xf8) = iVar9;
            if (iVar9 == -1) {
              pcVar30 = *(char **)(puVar35 + -0xfc);
              puVar35[-0xf4] = 0;
              *(undefined4 *)(puVar35 + -0xf8) = 1;
            }
            else {
              pcVar30 = *(char **)(puVar35 + -0xfc);
              if (iVar9 != -2) {
                if (iVar9 == 0) {
                  *(undefined4 *)(puVar35 + -0xf8) = 1;
                  pbVar29 = *(byte **)(puVar35 + -0xf0);
                  puVar39 = puVar37;
                  if (*pcVar30 != '\0') goto LAB_0002ef60;
                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
                }
                else {
                  pbVar29 = *(byte **)(puVar35 + -0xf0);
                }
                pcVar33 = *(code **)(iVar15 + -0x799c);
                unaff_s6 = (byte *)0x1;
                puVar35[-0xf4] = 1;
                iVar9 = (*pcVar33)(unaff_s4);
                iVar15 = *(int *)(puVar35 + -0x170);
                if (iVar9 != 0) {
                  puVar35[-0x10c] = 0;
                }
                puVar35[-0x100] = 1;
                goto LAB_0002ea50;
              }
              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(undefined4 *)(puVar35 + -0xf8) = uVar41;
              puVar35[-0xf4] = 0;
            }
            while( true ) {
              unaff_s5 = unaff_s5 + -1;
              puVar35[-0x100] = 0;
              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));
              *(byte **)(puVar35 + -0xfc) = pbVar29;
              unaff_s6 = pbVar29;
              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;
LAB_0002ea08:
              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;
              pcVar33 = *(code **)(iVar15 + -0x799c);
              puVar39 = puVar37;
              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>
                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;
              *(undefined4 *)(puVar35 + -0xf8) = 1;
              pbVar29 = (byte *)(int)(char)*pbVar29;
              puVar35[-0xf4] = 1;
              puVar35[-0x100] = 1;
              *(byte **)(puVar35 + -0xf0) = pbVar29;
LAB_0002ea50:
              if (pbVar29 == (byte *)0x0) break;
LAB_0002e9e8:
              pcVar30 = *(char **)(puVar35 + -0xfc);
            }
            pcVar33 = *(code **)(puVar35 + -0x14c);
            pbVar29 = (byte *)0x0;
            pbVar28 = (byte *)0x0;
            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;
LAB_0002ed2c:
            unaff_s6 = *(byte **)(puVar35 + -0xfc);
LAB_0002ed30:
            if (puVar35[-0x10c] == '\0') {
              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>
                   (*unaff_s6 & 0x1f) & 1) == 0) {
                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);
                iVar15 = *(int *)(puVar35 + -0x170);
                puVar38 = puVar37;
                if (iVar9 != 0) {
                  puVar35[-0x10c] = 1;
                  goto LAB_0002ee14;
                }
                break;
              }
              *(undefined4 *)(puVar35 + -0xf8) = 1;
              pbVar29 = (byte *)(int)(char)*unaff_s6;
              puVar35[-0xf4] = 1;
              puVar35[-0x100] = 1;
              *(byte **)(puVar35 + -0xf0) = pbVar29;
LAB_0002ed78:
              pcVar33 = *(code **)(puVar35 + -0x14c);
              pbVar28 = pbVar29;
              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;
LAB_0002ea60:
              pbVar24 = puVar35 + -0x148;
              pbVar43 = pbVar6;
              iVar9 = (*pcVar33)(pbVar10);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(int *)(puVar35 + -0x15c) = iVar9;
              pbVar29 = pbVar28;
              if (iVar9 != 0) goto LAB_0002ef34;
              uVar5 = (uint)(byte)puVar35[-0xbc];
              *(byte **)(puVar35 + -0x150) = param_1;
            }
            else {
LAB_0002ee14:
              uVar41 = (**(code **)(iVar15 + -0x7a18))();
              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);
              pbVar43 = unaff_s6;
              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(int *)(puVar35 + -0xf8) = iVar9;
              if (iVar9 != -1) {
                if (iVar9 == -2) {
                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));
                  iVar15 = *(int *)(puVar35 + -0x170);
                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;
                  puVar35[-0xf4] = 0;
                  puVar35[-0x100] = 1;
                  goto LAB_0002ed84;
                }
                if (iVar9 != 0) {
                  pbVar29 = *(byte **)(puVar35 + -0xf0);
LAB_0002ee78:
                  pcVar33 = *(code **)(iVar15 + -0x799c);
                  unaff_s5 = (byte *)0x1;
                  puVar35[-0xf4] = 1;
                  iVar9 = (*pcVar33)(unaff_s4);
                  iVar15 = *(int *)(puVar35 + -0x170);
                  if (iVar9 != 0) {
                    puVar35[-0x10c] = 0;
                  }
                  puVar35[-0x100] = 1;
                  goto LAB_0002ed78;
                }
                *(undefined4 *)(puVar35 + -0xf8) = 1;
                pbVar29 = *(byte **)(puVar35 + -0xf0);
                puVar39 = puVar37;
                if (**(char **)(puVar35 + -0xfc) == '\0') {
                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;
                  goto LAB_0002ed10;
                }
                goto LAB_0002ef60;
              }
              puVar35[-0xf4] = 0;
              *(undefined4 *)(puVar35 + -0xf8) = 1;
              puVar35[-0x100] = 1;
LAB_0002ed84:
              uVar5 = (uint)(byte)puVar35[-0xbc];
              *(byte **)(puVar35 + -0x150) = param_1;
              *(undefined4 *)(puVar35 + -0x15c) = 1;
            }
          } while( true );
        }
        goto LAB_0002ef3c;
      }
      pbVar29 = (byte *)0x0;
      goto LAB_0002e2ac;
    }
    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);
    iVar15 = *(int *)(puVar35 + -0x170);
    pbVar29 = pbVar28;
    if (iVar9 != 0) {
      pcVar33 = *(code **)(iVar15 + -0x7a18);
      puVar35[-0x144] = 1;
      uVar41 = (*pcVar33)();
      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
      pbVar43 = pbVar6;
      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);
      iVar15 = *(int *)(puVar35 + -0x170);
      *(int *)(puVar35 + -0x130) = iVar9;
      if (iVar9 == -1) {
        puVar35[-300] = 0;
        *(undefined4 *)(puVar35 + -0x130) = 1;
        puVar35[-0x138] = 1;
        goto LAB_0002e360;
      }
      if (iVar9 == -2) {
        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));
        iVar15 = *(int *)(puVar35 + -0x170);
        *(undefined4 *)(puVar35 + -0x130) = uVar41;
        puVar35[-300] = 0;
        puVar35[-0x138] = 1;
        goto LAB_0002e360;
      }
      if (iVar9 == 0) {
        *(undefined4 *)(puVar35 + -0x130) = 1;
        pbVar29 = *(byte **)(puVar35 + -0x128);
        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;
        pcVar33 = *(code **)(iVar15 + -0x799c);
        puVar39 = puVar34 + -0x128;
        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
      }
      else {
        pbVar29 = *(byte **)(puVar35 + -0x128);
        pcVar33 = *(code **)(iVar15 + -0x799c);
      }
      unaff_s5 = (byte *)0x1;
      puVar35[-300] = 1;
      iVar9 = (*pcVar33)(param_1);
      iVar15 = *(int *)(puVar35 + -0x170);
      if (iVar9 != 0) {
        puVar35[-0x144] = 0;
      }
      puVar35[-0x138] = 1;
      goto LAB_0002e2a0;
    }
LAB_0002ef3c:
    (**(code **)(iVar15 + -0x7bb0))
              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,
               *(int *)(iVar15 + -0x7fc8) + -0xd0);
    puVar39 = puVar38;
LAB_0002ef60:
    pbVar24 = &DAT_000000b2;
    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);
    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);
    (**(code **)(iVar15 + -0x7bb0))();
  }
  pcVar33 = *(code **)(iVar15 + -0x79d8);
  pcVar42 = mbsnwidth;
  (*pcVar33)();
  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);
  pcVar40 = *(code **)(pcVar33 + 0x46bd8);
  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;
  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;
  *(byte **)(puVar35 + -400) = unaff_s6;
  *(byte **)(puVar35 + -0x1a4) = pbVar29;
  pbVar31 = pbVar28 + (int)pbVar43;
  *(code **)(puVar35 + -0x184) = pcVar42;
  *(undefined1 **)(puVar35 + -0x188) = puVar39;
  *(byte **)(puVar35 + -0x18c) = pbVar23;
  *(byte **)(puVar35 + -0x194) = unaff_s5;
  *(byte **)(puVar35 + -0x198) = unaff_s4;
  *(byte **)(puVar35 + -0x19c) = pbVar6;
  *(byte **)(puVar35 + -0x1a0) = pbVar10;
  *(byte **)(puVar35 + -0x1a8) = param_1;
  *(byte **)(puVar35 + -0x178) = pbVar24;
  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;
  uVar5 = (*pcVar40)();
  iVar15 = *(int *)(puVar35 + -0x1c8);
  if (uVar5 < 2) {
    pbVar6 = (byte *)0x0;
    if (pbVar28 < pbVar31) {
      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();
      pbVar43 = (byte *)0x7fffffff;
      iVar15 = *(int *)(puVar35 + -0x1c8);
      do {
        pbVar24 = pbVar28 + 1;
        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);
        if ((uVar1 & 0x40) == 0) {
          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;
          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;
        }
        else {
LAB_0002f1dc:
          piVar19 = *(int **)(puVar35 + -0x1bc);
          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;
          pbVar6 = pbVar6 + 1;
        }
        pbVar28 = pbVar24;
      } while (pbVar31 != pbVar24);
      piVar19 = *(int **)(puVar35 + -0x1bc);
      goto LAB_0002f064;
    }
  }
  else {
    pbVar6 = (byte *)0x0;
    if (pbVar28 < pbVar31) {
      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;
      do {
        iVar9 = (int)(char)*pbVar28;
        if (iVar9 < 0x40) {
          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;
LAB_0002f0c8:
          *(undefined4 *)(puVar35 + -0x1b4) = 0;
          *(undefined4 *)(puVar35 + -0x1b0) = 0;
          do {
            pbVar43 = pbVar28;
            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,
                                puVar35 + -0x1b4);
            iVar15 = *(int *)(puVar35 + -0x1c8);
            if (iVar9 == -1) {
              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;
              goto LAB_0002f210;
            }
            if (iVar9 == -2) {
              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;
              pbVar6 = pbVar6 + 1;
              pbVar28 = pbVar31;
              break;
            }
            if (iVar9 == 0) {
              iVar9 = 1;
            }
            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));
            iVar15 = *(int *)(puVar35 + -0x1c8);
            if (iVar11 < 0) {
              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;
              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));
              iVar15 = *(int *)(puVar35 + -0x1c8);
              if (iVar11 == 0) {
                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;
                pbVar6 = pbVar6 + 1;
              }
            }
            else {
              if (0x7fffffff - (int)pbVar6 < iVar11) {
LAB_0002f234:
                pbVar6 = (byte *)0x7fffffff;
                goto LAB_0002f060;
              }
              pbVar6 = pbVar6 + iVar11;
            }
            pbVar28 = pbVar28 + iVar9;
            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);
            iVar15 = *(int *)(puVar35 + -0x1c8);
          } while (iVar9 == 0);
        }
        else {
          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))
          goto LAB_0002f0c8;
LAB_0002f050:
          pbVar6 = pbVar6 + 1;
          pbVar28 = pbVar28 + 1;
        }
      } while (pbVar28 < pbVar31);
    }
  }
LAB_0002f060:
  piVar19 = *(int **)(puVar35 + -0x1bc);
LAB_0002f064:
  iVar9 = *(int *)(puVar35 + -0x1ac);
  if (iVar9 == *piVar19) {
    return pbVar6;
  }
  pcVar33 = *(code **)(iVar15 + -0x79d8);
  pcVar42 = gnu_mbswidth;
  (*pcVar33)();
  pcVar40 = *(code **)(pcVar33 + 0x468a8);
  *(byte **)(puVar35 + -0x1e0) = pbVar31;
  *(byte **)(puVar35 + -0x1e4) = pbVar6;
  *(code **)(puVar35 + -0x1dc) = pcVar42;
  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;
  uVar41 = (*pcVar40)();
  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);
  return pbVar28;
}


lui gp,0x5
addiu gp,gp,0x100
addu gp,gp,t9
addiu sp,sp,-0x38
sll v0,a2,0x2
sw s1,0x2c(sp)
sw s0,0x28(sp)
or s0,a0,zero
lw s1,-0x7998(gp)
sw s8,0x30(sp)
or s8,sp,zero
sw ra,0x34(sp)
sw gp,0x10(sp)
lw a0,0x0(s1)
sw a0,0x24(s8)
bltz v0,0x0002d620
_srl v1,a2,0x1e
sltu v1,zero,v1
bne v1,zero,0x0002d620
_sltiu v1,v0,0xfb1
beq v1,zero,0x0002d5f4
_lw t9,-0x7ca4(gp)
addiu v0,v0,0x16
srl v0,v0,0x3
sll v0,v0,0x3
subu sp,sp,v0
li v0,-0x10
addiu a0,sp,0x1f
and a0,a0,v0
beq a0,zero,0x0002d5c8
_or v0,zero,zero
li v1,0x1
sltiu v0,a2,0x3
bne v0,zero,0x0002d570
_sw v1,0x4(a0)
addiu t2,a0,0x8
or v1,zero,zero
li v0,0x2
addu t1,a1,v0
addu t0,a1,v1
lbu t1,-0x1(t1)
lbu t0,0x0(t0)
bne t0,t1,0x0002d554
_nop
b 0x0002d654
_addiu v1,v1,0x1
addu t0,a0,t0
lw t0,0x0(t0)
subu v1,v1,t0
addu t0,a1,v1
lbu t0,0x0(t0)
beq t0,t1,0x0002d650
_nop
bne v1,zero,0x0002d538
_sll t0,v1,0x2
or v1,zero,zero
sw v0,0x0(t2)
addiu v0,v0,0x1
bne a2,v0,0x0002d518
_addiu t2,t2,0x4
sw zero,0x0(a3)
or v0,zero,zero
lbu v1,0x0(s0)
or t0,s0,zero
beq v1,zero,0x0002d5b8
_lw t9,-0x7ca0(gp)
addu t1,a1,v0
lbu t1,0x0(t1)
beq t1,v1,0x0002d628
_nop
beq v0,zero,0x0002d640
_sll t1,v0,0x2
addu t1,a0,t1
lw t1,0x0(t1)
addu s0,s0,t1
bne v1,zero,0x0002d588
_subu v0,v0,t1
lw t9,-0x7ca0(gp)
jalr t9
_nop
li v0,0x1
lw gp,0x10(s8)
lw a0,0x24(s8)
lw v1,0x0(s1)
bne a0,v1,0x0002d668
_lw t9,-0x79d8(gp)
or sp,s8,zero
lw ra,0x34(sp)
lw s8,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x38
or a0,v0,zero
sw a3,0x18(s8)
sw a2,0x40(s8)
jalr t9
_sw a1,0x1c(s8)
or a0,v0,zero
lw gp,0x10(s8)
lw a3,0x18(s8)
lw a2,0x40(s8)
bne a0,zero,0x0002d4fc
_lw a1,0x1c(s8)
b 0x0002d5c8
_or v0,zero,zero
addiu v0,v0,0x1
beq a2,v0,0x0002d660
_addiu t1,t0,0x1
lbu v1,0x1(t0)
b 0x0002d580
_or t0,t1,zero
lbu v1,0x1(t0)
addiu s0,s0,0x1
b 0x0002d580
_addiu t0,t0,0x1
addiu v1,v1,0x1
subu t0,v0,v1
b 0x0002d564
_sw t0,0x0(t2)
b 0x0002d5b4
_sw s0,0x0(a3)
jalr t9
_nop
(translation_unit "byte * FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)\n\n{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}\n\n" (function_definition "byte * FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)\n\n{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}" type_identifier (pointer_declarator "* FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" * (function_declarator "FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" identifier (parameter_list "(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "undefined4 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "uint *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "byte *pbVar28;" type_identifier (pointer_declarator "*pbVar28" * identifier) ;) (declaration "byte *pbVar29;" type_identifier (pointer_declarator "*pbVar29" * identifier) ;) (declaration "char *pcVar30;" primitive_type (pointer_declarator "*pcVar30" * identifier) ;) (declaration "byte *pbVar31;" type_identifier (pointer_declarator "*pbVar31" * identifier) ;) (declaration "int unaff_s2;" primitive_type identifier ;) (declaration "undefined1 *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "byte *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "byte *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "code *pcVar33;" type_identifier (pointer_declarator "*pcVar33" * identifier) ;) (declaration "undefined1 *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "undefined1 *puVar35;" type_identifier (pointer_declarator "*puVar35" * identifier) ;) (declaration "undefined1 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "undefined1 *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "undefined1 *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "code *pcVar40;" type_identifier (pointer_declarator "*pcVar40" * identifier) ;) (declaration "undefined4 uVar41;" type_identifier identifier ;) (declaration "code *pcVar42;" type_identifier (pointer_declarator "*pcVar42" * identifier) ;) (declaration "byte *pbVar43;" type_identifier (pointer_declarator "*pbVar43" * identifier) ;) (declaration "undefined1 auStack_38 [16];" type_identifier (array_declarator "auStack_38 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "pbVar28 = PTR___stack_chk_guard_00075be8;" (assignment_expression "pbVar28 = PTR___stack_chk_guard_00075be8" identifier = identifier) ;) (expression_statement "puVar34 = auStack_38;" (assignment_expression "puVar34 = auStack_38" identifier = identifier) ;) (expression_statement "uVar5 = param_3 * 4;" (assignment_expression "uVar5 = param_3 * 4" identifier = (binary_expression "param_3 * 4" identifier * number_literal)) ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_00075be8;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_00075be8" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00075be8" * (cast_expression "(int *)PTR___stack_chk_guard_00075be8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" if (parenthesized_expression "(((int)uVar5 < 0) || (param_3 >> 0x1e != 0))" ( (binary_expression "((int)uVar5 < 0) || (param_3 >> 0x1e != 0)" (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(param_3 >> 0x1e != 0)" ( (binary_expression "param_3 >> 0x1e != 0" (binary_expression "param_3 >> 0x1e" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }" { (labeled_statement "LAB_0002d620:\n    pbVar6 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" else (compound_statement "{\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" { (if_statement "if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" if (parenthesized_expression "(uVar5 < 0xfb1)" ( (binary_expression "uVar5 < 0xfb1" identifier < number_literal) )) (compound_statement "{\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }" { (expression_statement "iVar15 = -(uVar5 + 0x16 & 0xfffffff8);" (assignment_expression "iVar15 = -(uVar5 + 0x16 & 0xfffffff8)" identifier = (unary_expression "-(uVar5 + 0x16 & 0xfffffff8)" - (parenthesized_expression "(uVar5 + 0x16 & 0xfffffff8)" ( (binary_expression "uVar5 + 0x16 & 0xfffffff8" (binary_expression "uVar5 + 0x16" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar34 = auStack_38 + iVar15;" (assignment_expression "puVar34 = auStack_38 + iVar15" identifier = (binary_expression "auStack_38 + iVar15" identifier + identifier)) ;) (expression_statement "uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;" (assignment_expression "uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0" identifier = (binary_expression "(int)&local_1c + iVar15 + 3 & 0xfffffff0" (binary_expression "(int)&local_1c + iVar15 + 3" (binary_expression "(int)&local_1c + iVar15" (cast_expression "(int)&local_1c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_1c" & identifier)) + identifier) + number_literal) & number_literal)) ;) (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar36 = auStack_38 + iVar15;" (assignment_expression "puVar36 = auStack_38 + iVar15" identifier = (binary_expression "auStack_38 + iVar15" identifier + identifier)) ;) (if_statement "if (uVar5 == 0) goto LAB_0002d5c8;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d5c8;" goto statement_identifier ;)) }) (else_clause "else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" else (compound_statement "{\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" { (expression_statement "local_1c = param_2;" (assignment_expression "local_1c = param_2" identifier = identifier) ;) (expression_statement "uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);" (assignment_expression "uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5)" identifier = (call_expression "(*(code *)PTR_mmalloca_000758dc)(uVar5)" (parenthesized_expression "(*(code *)PTR_mmalloca_000758dc)" ( (pointer_expression "*(code *)PTR_mmalloca_000758dc" * (cast_expression "(code *)PTR_mmalloca_000758dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5)" ( identifier )))) ;) (expression_statement "param_2 = local_1c;" (assignment_expression "param_2 = local_1c" identifier = identifier) ;) (expression_statement "puVar36 = auStack_38;" (assignment_expression "puVar36 = auStack_38" identifier = identifier) ;) (if_statement "if (uVar5 == 0) goto LAB_0002d620;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d620;" goto statement_identifier ;)) }))) (expression_statement "puVar34 = puVar36;" (assignment_expression "puVar34 = puVar36" identifier = identifier) ;) (expression_statement "*(undefined4 *)(uVar5 + 4) = 1;" (assignment_expression "*(undefined4 *)(uVar5 + 4) = 1" (pointer_expression "*(undefined4 *)(uVar5 + 4)" * (cast_expression "(undefined4 *)(uVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 4)" ( (binary_expression "uVar5 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }" if (parenthesized_expression "(2 < param_3)" ( (binary_expression "2 < param_3" number_literal < identifier) )) (compound_statement "{\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }" { (expression_statement "puVar27 = (uint *)(uVar5 + 8);" (assignment_expression "puVar27 = (uint *)(uVar5 + 8)" identifier = (cast_expression "(uint *)(uVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 8)" ( (binary_expression "uVar5 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 2;" (assignment_expression "uVar7 = 2" identifier = number_literal) ;) (do_statement "do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);" do (compound_statement "{\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      }" { (expression_statement "cVar14 = *(char *)(param_2 + iVar15);" (assignment_expression "cVar14 = *(char *)(param_2 + iVar15)" identifier = (pointer_expression "*(char *)(param_2 + iVar15)" * (cast_expression "(char *)(param_2 + iVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15)" ( (binary_expression "param_2 + iVar15" identifier + identifier) ))))) ;) (while_statement "while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }" while (parenthesized_expression "(cVar14 != *(char *)(param_2 + uVar7 + -1))" ( (binary_expression "cVar14 != *(char *)(param_2 + uVar7 + -1)" identifier != (pointer_expression "*(char *)(param_2 + uVar7 + -1)" * (cast_expression "(char *)(param_2 + uVar7 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + uVar7 + -1)" ( (binary_expression "param_2 + uVar7 + -1" (binary_expression "param_2 + uVar7" identifier + identifier) + number_literal) ))))) )) (compound_statement "{\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }" { (if_statement "if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "*puVar27 = uVar7;" (assignment_expression "*puVar27 = uVar7" (pointer_expression "*puVar27" * identifier) = identifier) ;) (goto_statement "goto LAB_0002d564;" goto statement_identifier ;) })) (expression_statement "iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);" (assignment_expression "iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4)" identifier = (binary_expression "iVar15 - *(int *)(uVar5 + iVar15 * 4)" identifier - (pointer_expression "*(int *)(uVar5 + iVar15 * 4)" * (cast_expression "(int *)(uVar5 + iVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + iVar15 * 4)" ( (binary_expression "uVar5 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) )))))) ;) (expression_statement "cVar14 = *(char *)(param_2 + iVar15);" (assignment_expression "cVar14 = *(char *)(param_2 + iVar15)" identifier = (pointer_expression "*(char *)(param_2 + iVar15)" * (cast_expression "(char *)(param_2 + iVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15)" ( (binary_expression "param_2 + iVar15" identifier + identifier) ))))) ;) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "*puVar27 = uVar7 - iVar15;" (assignment_expression "*puVar27 = uVar7 - iVar15" (pointer_expression "*puVar27" * identifier) = (binary_expression "uVar7 - iVar15" identifier - identifier)) ;) (labeled_statement "LAB_0002d564:\n        uVar7 = uVar7 + 1;" statement_identifier : (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;)) (expression_statement "puVar27 = puVar27 + 1;" (assignment_expression "puVar27 = puVar27 + 1" identifier = (binary_expression "puVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != uVar7)" ( (binary_expression "param_3 != uVar7" identifier != identifier) )) ;) })) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bVar20 = *param_1;" (assignment_expression "bVar20 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (labeled_statement "LAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" statement_identifier : (if_statement "if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" if (parenthesized_expression "(bVar20 != 0)" ( (binary_expression "bVar20 != 0" identifier != number_literal) )) (compound_statement "{\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" { (while_statement "while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }" while (parenthesized_expression "(*(byte *)(param_2 + uVar7) != bVar20)" ( (binary_expression "*(byte *)(param_2 + uVar7) != bVar20" (pointer_expression "*(byte *)(param_2 + uVar7)" * (cast_expression "(byte *)(param_2 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + uVar7)" ( (binary_expression "param_2 + uVar7" identifier + identifier) )))) != identifier) )) (compound_statement "{\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }" { (if_statement "if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }" { (expression_statement "bVar20 = pbVar6[1];" (assignment_expression "bVar20 = pbVar6[1]" identifier = (subscript_expression "pbVar6[1]" identifier [ number_literal ])) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002d580;" goto statement_identifier ;) })) (expression_statement "iVar15 = *(int *)(uVar5 + uVar7 * 4);" (assignment_expression "iVar15 = *(int *)(uVar5 + uVar7 * 4)" identifier = (pointer_expression "*(int *)(uVar5 + uVar7 * 4)" * (cast_expression "(int *)(uVar5 + uVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + uVar7 * 4)" ( (binary_expression "uVar5 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (expression_statement "uVar7 = uVar7 - iVar15;" (assignment_expression "uVar7 = uVar7 - iVar15" identifier = (binary_expression "uVar7 - iVar15" identifier - identifier)) ;) (if_statement "if (bVar20 == 0) goto LAB_0002d5b8;" if (parenthesized_expression "(bVar20 == 0)" ( (binary_expression "bVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d5b8;" goto statement_identifier ;)) })) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }" if (parenthesized_expression "(param_3 == uVar7)" ( (binary_expression "param_3 == uVar7" identifier == identifier) )) (compound_statement "{\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }" { (expression_statement "*param_4 = param_1;" (assignment_expression "*param_4 = param_1" (pointer_expression "*param_4" * identifier) = identifier) ;) (goto_statement "goto LAB_0002d5b8;" goto statement_identifier ;) })) (expression_statement "bVar20 = pbVar6[1];" (assignment_expression "bVar20 = pbVar6[1]" identifier = (subscript_expression "pbVar6[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002d580;" goto statement_identifier ;) }))) (labeled_statement "LAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();" statement_identifier : (expression_statement "(*(code *)PTR_freea_000758e0)();" (call_expression "(*(code *)PTR_freea_000758e0)()" (parenthesized_expression "(*(code *)PTR_freea_000758e0)" ( (pointer_expression "*(code *)PTR_freea_000758e0" * (cast_expression "(code *)PTR_freea_000758e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "pbVar6 = (byte *)0x1;" (assignment_expression "pbVar6 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }" statement_identifier : (if_statement "if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }" if (parenthesized_expression "(local_14 == *(int *)pbVar28)" ( (binary_expression "local_14 == *(int *)pbVar28" identifier == (pointer_expression "*(int *)pbVar28" * (cast_expression "(int *)pbVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return pbVar6;\n  }" { (return_statement "return pbVar6;" return identifier ;) }))) (expression_statement "pcVar40 = FUN_0002d670;" (assignment_expression "pcVar40 = FUN_0002d670" identifier = identifier) ;) (expression_statement "puVar32 = PTR___stack_chk_fail_00075ba8;" (assignment_expression "puVar32 = PTR___stack_chk_fail_00075ba8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00075ba8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00075ba8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00075ba8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00075ba8" * (cast_expression "(code *)PTR___stack_chk_fail_00075ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar24 = &DAT_000000b3;" (assignment_expression "pbVar24 = &DAT_000000b3" identifier = (pointer_expression "&DAT_000000b3" & identifier)) ;) (expression_statement "iVar15 = *(int *)(puVar32 + 0x47f48);" (assignment_expression "iVar15 = *(int *)(puVar32 + 0x47f48)" identifier = (pointer_expression "*(int *)(puVar32 + 0x47f48)" * (cast_expression "(int *)(puVar32 + 0x47f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x47f48)" ( (binary_expression "puVar32 + 0x47f48" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(puVar32 + 0x48360);" (assignment_expression "pcVar33 = *(code **)(puVar32 + 0x48360)" identifier = (pointer_expression "*(code **)(puVar32 + 0x48360)" * (cast_expression "(code **)(puVar32 + 0x48360)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + 0x48360)" ( (binary_expression "puVar32 + 0x48360" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);" (assignment_expression "pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(puVar32 + 0x47f48) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar32 + 0x47f48) + -0x120)" ( (binary_expression "*(int *)(puVar32 + 0x47f48) + -0x120" (pointer_expression "*(int *)(puVar32 + 0x47f48)" * (cast_expression "(int *)(puVar32 + 0x47f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x47f48)" ( (binary_expression "puVar32 + 0x47f48" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;" (assignment_expression "*(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10" (pointer_expression "*(undefined **)(puVar34 + -0x10)" * (cast_expression "(undefined **)(puVar34 + -0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x10)" ( (binary_expression "puVar34 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar32 + 0x4ff10" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar34 + -4) = pcVar40;" (assignment_expression "*(code **)(puVar34 + -4) = pcVar40" (pointer_expression "*(code **)(puVar34 + -4)" * (cast_expression "(code **)(puVar34 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -4)" ( (binary_expression "puVar34 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar41 = 0x2d6ac;" (assignment_expression "uVar41 = 0x2d6ac" identifier = number_literal) ;) (expression_statement "iVar15 = iVar15 + -0x114;" (assignment_expression "iVar15 = iVar15 + -0x114" identifier = (binary_expression "iVar15 + -0x114" identifier + number_literal)) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar35 = puVar34 + -0x128;" (assignment_expression "puVar35 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar38 = puVar34 + -0x128;" (assignment_expression "puVar38 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar39 = puVar34 + -0x128;" (assignment_expression "puVar39 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x4853c)" identifier = (pointer_expression "*(undefined4 **)(pcVar33 + 0x4853c)" * (cast_expression "(undefined4 **)(pcVar33 + 0x4853c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x4853c)" ( (binary_expression "pcVar33 + 0x4853c" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x48238);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x48238)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x48238)" * (cast_expression "(code **)(pcVar33 + 0x48238)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x48238)" ( (binary_expression "pcVar33 + 0x48238" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar34 + -0x28) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar34 + -0x28) = auStack_38" (pointer_expression "*(undefined1 **)(puVar34 + -0x28)" * (cast_expression "(undefined1 **)(puVar34 + -0x28)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x28)" ( (binary_expression "puVar34 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x2c) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar34 + -0x2c) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar34 + -0x2c)" * (cast_expression "(undefined4 *)(puVar34 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x2c)" ( (binary_expression "puVar34 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar34 + -0x10c) = puVar8;" (assignment_expression "*(undefined4 **)(puVar34 + -0x10c) = puVar8" (pointer_expression "*(undefined4 **)(puVar34 + -0x10c)" * (cast_expression "(undefined4 **)(puVar34 + -0x10c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x10c)" ( (binary_expression "puVar34 + -0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;" (assignment_expression "*(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4" (pointer_expression "*(code **)(puVar34 + -0x118)" * (cast_expression "(code **)(puVar34 + -0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4fed4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar34 + -0x108) = iVar15;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar15" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x24) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x24) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x24)" * (cast_expression "(undefined4 *)(puVar34 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x24)" ( (binary_expression "puVar34 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x30) = unaff_s6;" (assignment_expression "*(byte **)(puVar34 + -0x30) = unaff_s6" (pointer_expression "*(byte **)(puVar34 + -0x30)" * (cast_expression "(byte **)(puVar34 + -0x30)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x30)" ( (binary_expression "puVar34 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x34) = unaff_s5;" (assignment_expression "*(byte **)(puVar34 + -0x34) = unaff_s5" (pointer_expression "*(byte **)(puVar34 + -0x34)" * (cast_expression "(byte **)(puVar34 + -0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x34)" ( (binary_expression "puVar34 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x38) = unaff_s4;" (assignment_expression "*(byte **)(puVar34 + -0x38) = unaff_s4" (pointer_expression "*(byte **)(puVar34 + -0x38)" * (cast_expression "(byte **)(puVar34 + -0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x38)" ( (binary_expression "puVar34 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar34 + -0x3c) = unaff_s3;" (assignment_expression "*(undefined1 **)(puVar34 + -0x3c) = unaff_s3" (pointer_expression "*(undefined1 **)(puVar34 + -0x3c)" * (cast_expression "(undefined1 **)(puVar34 + -0x3c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x3c)" ( (binary_expression "puVar34 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar34 + -0x40) = unaff_s2;" (assignment_expression "*(int *)(puVar34 + -0x40) = unaff_s2" (pointer_expression "*(int *)(puVar34 + -0x40)" * (cast_expression "(int *)(puVar34 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x40)" ( (binary_expression "puVar34 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x44) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0x44) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0x44)" * (cast_expression "(byte **)(puVar34 + -0x44)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x44)" ( (binary_expression "puVar34 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x48) = param_1;" (assignment_expression "*(byte **)(puVar34 + -0x48) = param_1" (pointer_expression "*(byte **)(puVar34 + -0x48)" * (cast_expression "(byte **)(puVar34 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x48)" ( (binary_expression "puVar34 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x110) = pbVar24;" (assignment_expression "*(byte **)(puVar34 + -0x110) = pbVar24" (pointer_expression "*(byte **)(puVar34 + -0x110)" * (cast_expression "(byte **)(puVar34 + -0x110)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x110)" ( (binary_expression "puVar34 + -0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x4c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar34 + -0x4c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar34 + -0x4c)" * (cast_expression "(undefined4 *)(puVar34 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x4c)" ( (binary_expression "puVar34 + -0x4c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "uVar5 = (*pcVar40)(pbVar23);" (assignment_expression "uVar5 = (*pcVar40)(pbVar23)" identifier = (call_expression "(*pcVar40)(pbVar23)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(pbVar23)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);" (assignment_expression "pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar5 * 0x2c >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar5 * 0x2c >> 0x20)" ( (binary_expression "(ulonglong)uVar5 * 0x2c >> 0x20" (binary_expression "(ulonglong)uVar5 * 0x2c" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * number_literal) >> number_literal) )))) ;) (expression_statement "*(uint *)(puVar34 + -0x104) = uVar5;" (assignment_expression "*(uint *)(puVar34 + -0x104) = uVar5" (pointer_expression "*(uint *)(puVar34 + -0x104)" * (cast_expression "(uint *)(puVar34 + -0x104)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar36 = puVar34 + -0x128;" (assignment_expression "puVar36 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }" if (parenthesized_expression "((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0))" ( (binary_expression "(-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)" (parenthesized_expression "(-1 < (int)((ulonglong)uVar5 * 0x2c))" ( (binary_expression "-1 < (int)((ulonglong)uVar5 * 0x2c)" number_literal < (cast_expression "(int)((ulonglong)uVar5 * 0x2c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar5 * 0x2c)" ( (binary_expression "(ulonglong)uVar5 * 0x2c" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * number_literal) )))) )) && (parenthesized_expression "(pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)" ( (comma_expression "pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0" (assignment_expression "pbVar24 = pbVar43" identifier = identifier) , (comma_expression "puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0" (assignment_expression "puVar36 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) , (binary_expression "pbVar43 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }" { (if_statement "if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" if (parenthesized_expression "((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1)" ( (binary_expression "(uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1" (call_expression "(uint)(*(int *)(puVar34 + -0x104) * 0x2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar34 + -0x104) * 0x2c)" ( (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }" { (expression_statement "iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);" (assignment_expression "iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" identifier = (unary_expression "-(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" - (parenthesized_expression "(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" ( (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8" (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c + 0x16U" (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar35 = puVar34 + iVar9 + -0x128;" (assignment_expression "puVar35 = puVar34 + iVar9 + -0x128" identifier = (binary_expression "puVar34 + iVar9 + -0x128" (binary_expression "puVar34 + iVar9" identifier + identifier) + number_literal)) ;) (expression_statement "param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);" (assignment_expression "param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" identifier = (cast_expression "(byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" ( (binary_expression "(uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0" (call_expression "(uint)(puVar34 + iVar9 + -0x109)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar34 + iVar9 + -0x109)" ( (binary_expression "puVar34 + iVar9 + -0x109" (binary_expression "puVar34 + iVar9" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) }) (else_clause "else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" else (compound_statement "{\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" { (expression_statement "param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();" (assignment_expression "param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))()" identifier = (cast_expression "(byte *)(**(code **)(iVar15 + -0x7ca4))()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar15 + -0x7ca4))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7ca4))" ( (pointer_expression "**(code **)(iVar15 + -0x7ca4)" * (pointer_expression "*(code **)(iVar15 + -0x7ca4)" * (cast_expression "(code **)(iVar15 + -0x7ca4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7ca4)" ( (binary_expression "iVar15 + -0x7ca4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar24 = pbVar43;" (assignment_expression "pbVar24 = pbVar43" identifier = identifier) ;) (expression_statement "puVar36 = puVar35;" (assignment_expression "puVar36 = puVar35" identifier = identifier) ;) (if_statement "if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }" if (parenthesized_expression "(param_1 != (byte *)0x0)" ( (binary_expression "param_1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }" { (expression_statement "unaff_s3 = puVar34 + -0xf0;" (assignment_expression "unaff_s3 = puVar34 + -0xf0" identifier = (binary_expression "puVar34 + -0xf0" identifier + number_literal)) ;) (expression_statement "uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" (assignment_expression "uVar41 = *(undefined4 *)(iVar15 + -0x7c98)" identifier = (pointer_expression "*(undefined4 *)(iVar15 + -0x7c98)" * (cast_expression "(undefined4 *)(iVar15 + -0x7c98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7c98)" ( (binary_expression "iVar15 + -0x7c98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xf0)" * (cast_expression "(undefined4 *)(puVar34 + -0xf0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xf0)" ( (binary_expression "puVar34 + -0xf0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "unaff_s2 = 1;" (assignment_expression "unaff_s2 = 1" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xec) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xec) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xec)" * (cast_expression "(undefined4 *)(puVar34 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xec)" ( (binary_expression "puVar34 + -0xec" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x100) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x100) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x100)" * (cast_expression "(undefined4 *)(puVar34 + -0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s6 = puVar34 + -0xd8;" (assignment_expression "unaff_s6 = puVar34 + -0xd8" identifier = (binary_expression "puVar34 + -0xd8" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar34 + -0xe4) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0xe4) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0xf4] = 0;" (assignment_expression "puVar34[-0xf4] = 0" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s5 = puVar34 + -0xd4;" (assignment_expression "unaff_s5 = puVar34 + -0xd4" identifier = (binary_expression "puVar34 + -0xd4" identifier + number_literal)) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28)" identifier = (cast_expression "(byte *)(*(int *)(puVar34 + -0x104) * 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x104) * 0x28)" ( (binary_expression "*(int *)(puVar34 + -0x104) * 0x28" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) * number_literal) )))) ;) (expression_statement "puVar34[-0xe8] = 0;" (assignment_expression "puVar34[-0xe8] = 0" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xfc)" * (cast_expression "(byte **)(puVar34 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) = (binary_expression "param_1 + (int)pbVar28" identifier + (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s4 = param_1;" (assignment_expression "unaff_s4 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );" do (compound_statement "{\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      }" { (if_statement "if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" if (parenthesized_expression "(puVar34[-0xf4] == '\0')" ( (binary_expression "puVar34[-0xf4] == '\0'" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }" { (expression_statement "pbVar6 = (byte *)(uint)*pbVar23;" (assignment_expression "pbVar6 = (byte *)(uint)*pbVar23" identifier = (binary_expression "(byte *)(uint)*pbVar23" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar23 >> 5) * 4" (call_expression "(uint)(*pbVar23 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar23 >> 5)" ( (binary_expression "*pbVar23 >> 5" (pointer_expression "*pbVar23" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pbVar6 & 0x1f)" ( (binary_expression "(uint)pbVar6 & 0x1f" (cast_expression "(uint)pbVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }" { (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s3)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s3)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }" { (expression_statement "puVar34[-0xf4] = 1;" (assignment_expression "puVar34[-0xf4] = 1" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d840;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar23;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar23" identifier = (cast_expression "(byte *)(int)(char)*pbVar23" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar23" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar23" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar23" * identifier))))) ;) (expression_statement "puVar34[-0xdc] = 1;" (assignment_expression "puVar34[-0xdc] = 1" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xd8) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xd8) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xd8)" * (cast_expression "(byte **)(puVar34 + -0xd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;" if (parenthesized_expression "(pbVar28 == (byte *)0x0)" ( (binary_expression "pbVar28 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002d8cc;" goto statement_identifier ;)) (labeled_statement "LAB_0002d7f8:\n          bVar20 = 1;" statement_identifier : (expression_statement "bVar20 = 1;" (assignment_expression "bVar20 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" else (compound_statement "{\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" { (labeled_statement "LAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar43 = (byte *)strnlen1(pbVar23,uVar41);" (assignment_expression "pbVar43 = (byte *)strnlen1(pbVar23,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar23,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar23,uVar41)" identifier (argument_list "(pbVar23,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3)" identifier = (call_expression "rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3)" identifier (argument_list "(unaff_s6,pbVar23,pbVar43,unaff_s3)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0xe0) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xe0) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xe0)" * (cast_expression "(int *)(puVar34 + -0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" { (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "puVar34[-0xdc] = 0;" (assignment_expression "puVar34[-0xdc] = 0" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" else (compound_statement "{\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" { (if_statement "if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }" { (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }" { (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xd8);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xd8)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xd8)" * (cast_expression "(byte **)(puVar34 + -0xd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;" if (parenthesized_expression "(**(char **)(puVar34 + -0xe4) != '\0')" ( (binary_expression "**(char **)(puVar34 + -0xe4) != '\0'" (pointer_expression "**(char **)(puVar34 + -0xe4)" * (pointer_expression "*(char **)(puVar34 + -0xe4)" * (cast_expression "(char **)(puVar34 + -0xe4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (if_statement "if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }" { (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" identifier = (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_0002dc58;" goto statement_identifier ;) })) }) (else_clause "else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" else (compound_statement "{\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xd8);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xd8)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xd8)" * (cast_expression "(byte **)(puVar34 + -0xd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar34[-0xdc] = 1;" (assignment_expression "puVar34[-0xdc] = 1" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s3);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s3)" identifier = (call_expression "(*pcVar33)(unaff_s3)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s3)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                puVar34[-0xf4] = 0;\n              }" { (expression_statement "puVar34[-0xf4] = 0;" (assignment_expression "puVar34[-0xf4] = 0" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002d7f8;" goto statement_identifier ;)) (goto_statement "goto LAB_0002d8cc;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar34 + -0xe4))" ( (pointer_expression "*(undefined4 *)(puVar34 + -0xe4)" * (cast_expression "(undefined4 *)(puVar34 + -0xe4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "puVar34[-0xdc] = 0;" (assignment_expression "puVar34[-0xdc] = 0" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (expression_statement "pbVar43 = *(byte **)(puVar34 + -0xe0);" (assignment_expression "pbVar43 = *(byte **)(puVar34 + -0xe0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xe0)" * (cast_expression "(byte **)(puVar34 + -0xe0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) ))))) ;) (if_statement "if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" if (parenthesized_expression "(*(byte **)(puVar34 + -0xe4) == unaff_s5)" ( (binary_expression "*(byte **)(puVar34 + -0xe4) == unaff_s5" (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5)" identifier = (call_expression "(**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5)" (parenthesized_expression "(**(code **)(iVar15 + -0x7990))" ( (pointer_expression "**(code **)(iVar15 + -0x7990)" * (pointer_expression "*(code **)(iVar15 + -0x7990)" * (cast_expression "(code **)(iVar15 + -0x7990)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7990)" ( (binary_expression "iVar15 + -0x7990" identifier + number_literal) ))))) )) (argument_list "(unaff_s4 + 0x10,unaff_s5)" ( (binary_expression "unaff_s4 + 0x10" identifier + number_literal) , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "bVar20 = puVar34[-0xdc];" (assignment_expression "bVar20 = puVar34[-0xdc]" identifier = (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ])) ;) (expression_statement "pbVar43 = *(byte **)(puVar34 + -0xe0);" (assignment_expression "pbVar43 = *(byte **)(puVar34 + -0xe0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xe0)" * (cast_expression "(byte **)(puVar34 + -0xe0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)unaff_s4 = uVar41;" (assignment_expression "*(undefined4 *)unaff_s4 = uVar41" (pointer_expression "*(undefined4 *)unaff_s4" * (cast_expression "(undefined4 *)unaff_s4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) }) (else_clause "else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" else (compound_statement "{\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" { (expression_statement "*(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);" (assignment_expression "*(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4)" (pointer_expression "*(byte **)unaff_s4" * (cast_expression "(byte **)unaff_s4" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) ))))) ;) }))) (expression_statement "*(byte **)(unaff_s4 + 4) = pbVar43;" (assignment_expression "*(byte **)(unaff_s4 + 4) = pbVar43" (pointer_expression "*(byte **)(unaff_s4 + 4)" * (cast_expression "(byte **)(unaff_s4 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_s4 + 4)" ( (binary_expression "unaff_s4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s4[8] = bVar20;" (assignment_expression "unaff_s4[8] = bVar20" (subscript_expression "unaff_s4[8]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }" if (parenthesized_expression "(bVar20 != 0)" ( (binary_expression "bVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }" { (expression_statement "*(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);" (assignment_expression "*(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8)" (pointer_expression "*(undefined4 *)(unaff_s4 + 0xc)" * (cast_expression "(undefined4 *)(unaff_s4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s4 + 0xc)" ( (binary_expression "unaff_s4 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar34 + -0xd8)" * (cast_expression "(undefined4 *)(puVar34 + -0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) ))))) ;) })) (expression_statement "unaff_s4 = unaff_s4 + 0x28;" (assignment_expression "unaff_s4 = unaff_s4 + 0x28" identifier = (binary_expression "unaff_s4 + 0x28" identifier + number_literal)) ;) (expression_statement "puVar34[-0xe8] = 0;" (assignment_expression "puVar34[-0xe8] = 0" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);" (assignment_expression "pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4)" identifier = (binary_expression "pbVar43 + *(int *)(puVar34 + -0xe4)" identifier + (pointer_expression "*(int *)(puVar34 + -0xe4)" * (cast_expression "(int *)(puVar34 + -0xe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))))) ;) (expression_statement "*(byte **)(puVar34 + -0xe4) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0xe4) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "pbVar43 = (byte *)0x0;" (assignment_expression "pbVar43 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);" statement_identifier : (expression_statement "pbVar10 = *(byte **)(puVar34 + -0x4c);" (assignment_expression "pbVar10 = *(byte **)(puVar34 + -0x4c)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x4c)" * (cast_expression "(byte **)(puVar34 + -0x4c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x4c)" ( (binary_expression "puVar34 + -0x4c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79d8)" * (cast_expression "(code **)(iVar15 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79d8)" ( (binary_expression "iVar15 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "puVar35 = puVar36;" (assignment_expression "puVar35 = puVar36" identifier = identifier) ;) (if_statement "if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }" if (parenthesized_expression "(pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c))" ( (binary_expression "pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)" identifier == (cast_expression "(byte *)**(undefined4 **)(puVar34 + -0x10c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar34 + -0x10c)" * (pointer_expression "*(undefined4 **)(puVar34 + -0x10c)" * (cast_expression "(undefined4 **)(puVar34 + -0x10c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x10c)" ( (binary_expression "puVar34 + -0x10c" identifier + number_literal) ))))))) )) (compound_statement "{\n    return pbVar43;\n  }" { (return_statement "return pbVar43;" return identifier ;) })) (goto_statement "goto LAB_0002e0e0;" goto statement_identifier ;) (labeled_statement "LAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);" statement_identifier : (expression_statement "uVar5 = *(uint *)(puVar34 + -0x104);" (assignment_expression "uVar5 = *(uint *)(puVar34 + -0x104)" identifier = (pointer_expression "*(uint *)(puVar34 + -0x104)" * (cast_expression "(uint *)(puVar34 + -0x104)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;" (assignment_expression "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1" (pointer_expression "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4)" * (cast_expression "(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + 4)" ( (binary_expression "*(int *)(puVar34 + -0xfc) + 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (if_statement "if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }" if (parenthesized_expression "(uVar5 < 3)" ( (binary_expression "uVar5 < 3" identifier < number_literal) )) (compound_statement "{\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }" { (labeled_statement "LAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" statement_identifier : (expression_statement "uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" (assignment_expression "uVar41 = *(undefined4 *)(iVar15 + -0x7c98)" identifier = (pointer_expression "*(undefined4 *)(iVar15 + -0x7c98)" * (cast_expression "(undefined4 *)(iVar15 + -0x7c98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7c98)" ( (binary_expression "iVar15 + -0x7c98" identifier + number_literal) ))))) ;)) (expression_statement "unaff_s4 = puVar34 + -0xb8;" (assignment_expression "unaff_s4 = puVar34 + -0xb8" identifier = (binary_expression "puVar34 + -0xb8" identifier + number_literal)) ;) (expression_statement "uVar16 = *(undefined4 *)(puVar34 + -0x108);" (assignment_expression "uVar16 = *(undefined4 *)(puVar34 + -0x108)" identifier = (pointer_expression "*(undefined4 *)(puVar34 + -0x108)" * (cast_expression "(undefined4 *)(puVar34 + -0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = puVar34 + -0x80;" (assignment_expression "unaff_s6 = puVar34 + -0x80" identifier = (binary_expression "puVar34 + -0x80" identifier + number_literal)) ;) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xb8) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xb8) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xb8)" * (cast_expression "(undefined4 *)(puVar34 + -0xb8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xb8)" ( (binary_expression "puVar34 + -0xb8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x100) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x100) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x100)" * (cast_expression "(undefined4 *)(puVar34 + -0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s3 = puVar34 + -0x68;" (assignment_expression "unaff_s3 = puVar34 + -0x68" identifier = (binary_expression "puVar34 + -0x68" identifier + number_literal)) ;) (expression_statement "unaff_s5 = puVar34 + -0xa0;" (assignment_expression "unaff_s5 = puVar34 + -0xa0" identifier = (binary_expression "puVar34 + -0xa0" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xb4) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xb4) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xb4)" * (cast_expression "(undefined4 *)(puVar34 + -0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xb4)" ( (binary_expression "puVar34 + -0xb4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0x80)" * (cast_expression "(undefined4 *)(puVar34 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x80)" ( (binary_expression "puVar34 + -0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xac) = uVar16;" (assignment_expression "*(undefined4 *)(puVar34 + -0xac) = uVar16" (pointer_expression "*(undefined4 *)(puVar34 + -0xac)" * (cast_expression "(undefined4 *)(puVar34 + -0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "**(undefined4 **)(puVar34 + -0x110) = 0;" (assignment_expression "**(undefined4 **)(puVar34 + -0x110) = 0" (pointer_expression "**(undefined4 **)(puVar34 + -0x110)" * (pointer_expression "*(undefined4 **)(puVar34 + -0x110)" * (cast_expression "(undefined4 **)(puVar34 + -0x110)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x110)" ( (binary_expression "puVar34 + -0x110" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "cVar14 = '\0';" (assignment_expression "cVar14 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x7c) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0x7c) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0x7c)" * (cast_expression "(undefined4 *)(puVar34 + -0x7c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x7c)" ( (binary_expression "puVar34 + -0x7c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x74) = uVar16;" (assignment_expression "*(undefined4 *)(puVar34 + -0x74) = uVar16" (pointer_expression "*(undefined4 *)(puVar34 + -0x74)" * (cast_expression "(undefined4 *)(puVar34 + -0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0x84] = 0;" (assignment_expression "puVar34[-0x84] = 0" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar24 = pbVar43;" (assignment_expression "pbVar24 = pbVar43" identifier = identifier) ;) (labeled_statement "joined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" statement_identifier : (if_statement "if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" { (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002daa0;" goto statement_identifier ;) }))) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" identifier = (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;" if (parenthesized_expression "(puVar34[-0x6c] != '\0')" ( (binary_expression "puVar34[-0x6c] != '\0'" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002dae8;" goto statement_identifier ;)) (labeled_statement "LAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;" statement_identifier : (expression_statement "iVar11 = unaff_s2 * 4;" (assignment_expression "iVar11 = unaff_s2 * 4" identifier = (binary_expression "unaff_s2 * 4" identifier * number_literal)) ;)) (expression_statement "pbVar43 = param_1 + unaff_s2 * 0x28;" (assignment_expression "pbVar43 = param_1 + unaff_s2 * 0x28" identifier = (binary_expression "param_1 + unaff_s2 * 0x28" identifier + (binary_expression "unaff_s2 * 0x28" identifier * number_literal))) ;) (labeled_statement "LAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);" statement_identifier : (expression_statement "pbVar28 = *(byte **)(puVar34 + -0x70);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0x70)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x70)" * (cast_expression "(byte **)(puVar34 + -0x70)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) ))))) ;)) (expression_statement "pbVar24 = pbVar28;" (assignment_expression "pbVar24 = pbVar28" identifier = identifier) ;) (if_statement "if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" if (parenthesized_expression "(*(byte **)(pbVar43 + 4) == pbVar28)" ( (binary_expression "*(byte **)(pbVar43 + 4) == pbVar28" (pointer_expression "*(byte **)(pbVar43 + 4)" * (cast_expression "(byte **)(pbVar43 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar43 + 4)" ( (binary_expression "pbVar43 + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }" { (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79c0);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79c0)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) ;) (expression_statement "uVar41 = *(undefined4 *)pbVar43;" (assignment_expression "uVar41 = *(undefined4 *)pbVar43" identifier = (pointer_expression "*(undefined4 *)pbVar43" * (cast_expression "(undefined4 *)pbVar43" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int *)(puVar34 + -0x108) = iVar11;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar11" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "iVar9 = (*pcVar33)(uVar41);" (assignment_expression "iVar9 = (*pcVar33)(uVar41)" identifier = (call_expression "(*pcVar33)(uVar41)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(uVar41)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar34 + -0x108);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0x108)" identifier = (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002db1c;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002db1c;" goto statement_identifier ;)) (expression_statement "cVar14 = puVar34[-0xb0];" (assignment_expression "cVar14 = puVar34[-0xb0]" identifier = (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s2 == 0) goto LAB_0002da1c;" if (parenthesized_expression "(unaff_s2 == 0)" ( (binary_expression "unaff_s2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002da1c;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" else (compound_statement "{\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" { (labeled_statement "LAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;)) (if_statement "if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }" if (parenthesized_expression "(unaff_s2 == 0)" ( (binary_expression "unaff_s2 == 0" identifier == number_literal) )) (compound_statement "{\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }" { (expression_statement "cVar14 = puVar34[-0xb0];" (assignment_expression "cVar14 = puVar34[-0xb0]" identifier = (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" statement_identifier : (if_statement "if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }" { (expression_statement "pbVar6 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar6 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }" if (parenthesized_expression "(puVar34[-0xbc] == '\0')" ( (binary_expression "puVar34[-0xbc] == '\0'" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }" { (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }" { (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar6;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar6" identifier = (cast_expression "(byte *)(int)(char)*pbVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar6" * identifier))))) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xa0) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xa0) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar6 = (byte *)(uint)bVar20;" (assignment_expression "pbVar6 = (byte *)(uint)bVar20" identifier = (cast_expression "(byte *)(uint)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (goto_statement "goto LAB_0002da70;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "pbVar28 = pbVar6;" (assignment_expression "pbVar28 = pbVar6" identifier = identifier) ;) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;)) (expression_statement "puVar34[-0xbc] = 1;" (assignment_expression "puVar34[-0xbc] = 1" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier (argument_list "(unaff_s5,pbVar6,pbVar24,unaff_s4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0xa8) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xa8) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0002da7c;" goto statement_identifier ;) })) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pbVar28)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pbVar28)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002da7c;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }" { (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar20 = *pbVar28;" (assignment_expression "bVar20 = *pbVar28" identifier = (pointer_expression "*pbVar28" * identifier)) ;) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (bVar20 != 0) goto LAB_0002e098;" if (parenthesized_expression "(bVar20 != 0)" ( (binary_expression "bVar20 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (if_statement "if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }" { (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" identifier = (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_0002dc58;" goto statement_identifier ;) })) }) (else_clause "else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" else (compound_statement "{\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar34[-0xbc] = 0;\n          }" { (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b80)" * (cast_expression "(code **)(iVar15 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b80)" ( (binary_expression "iVar15 + -0x7b80" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;" if (parenthesized_expression "(pbVar28 == (byte *)0x0)" ( (binary_expression "pbVar28 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ddd4;" goto statement_identifier ;)) }) (else_clause "else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" else (compound_statement "{\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0xa4] != '\0') goto LAB_0002da70;" if (parenthesized_expression "(puVar34[-0xa4] != '\0')" ( (binary_expression "puVar34[-0xa4] != '\0'" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002da70;" goto statement_identifier ;)) })))) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002da7c:\n        puVar34[-0xb0] = 0;" statement_identifier : (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8)" (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = (binary_expression "pbVar28 + *(int *)(puVar34 + -0xa8)" identifier + (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))))) ;) (expression_statement "pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));" (assignment_expression "pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" identifier = (cast_expression "(byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" ( (binary_expression "*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70)" (pointer_expression "*(int *)(puVar34 + -0x74)" * (cast_expression "(int *)(puVar34 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar34 + -0x70)" * (cast_expression "(int *)(puVar34 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar34 + -0x74) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0x74) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;" statement_identifier : (if_statement "if (puVar34[-0x84] != '\0') goto LAB_0002dc78;" if (parenthesized_expression "(puVar34[-0x84] != '\0')" ( (binary_expression "puVar34[-0x84] != '\0'" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002dc78;" goto statement_identifier ;))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar23 >> 5) * 4" (call_expression "(uint)(*pbVar23 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar23 >> 5)" ( (binary_expression "*pbVar23 >> 5" (pointer_expression "*pbVar23" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar23 & 0x1f)" ( (binary_expression "*pbVar23 & 0x1f" (pointer_expression "*pbVar23" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }" { (while_statement "while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }" { (expression_statement "iVar9 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s6)" identifier = (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;)) (expression_statement "puVar34[-0x84] = 1;" (assignment_expression "puVar34[-0x84] = 1" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar23,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar23,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar23,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar23,uVar41)" identifier (argument_list "(pbVar23,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6)" identifier = (call_expression "rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6)" identifier (argument_list "(unaff_s3,pbVar23,pbVar24,unaff_s6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0x70) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x70) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x70)" * (cast_expression "(int *)(puVar34 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) goto LAB_0002df14;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0002df14;" goto statement_identifier ;)) (if_statement "if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar34 + -0x74))" ( (pointer_expression "*(undefined4 *)(puVar34 + -0x74)" * (cast_expression "(undefined4 *)(puVar34 + -0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0x6c] = 0;" (assignment_expression "puVar34[-0x6c] = 0" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d9f0;" goto statement_identifier ;) })) (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) break;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" identifier = (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (*pbVar23 != 0) goto LAB_0002e098;" if (parenthesized_expression "(*pbVar23 != 0)" ( (binary_expression "*pbVar23 != 0" (pointer_expression "*pbVar23" * identifier) != number_literal) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) goto LAB_0002dcdc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002dcdc;" goto statement_identifier ;)) (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" identifier = (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (labeled_statement "LAB_0002dc58:\n            FUN_0002d670();" statement_identifier : (expression_statement "FUN_0002d670();" (call_expression "FUN_0002d670()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" identifier = (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;)) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int *)(puVar34 + -0x108) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0x6c] = 1;" (assignment_expression "puVar34[-0x6c] = 1" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar11 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar11 = (*pcVar33)(unaff_s6)" identifier = (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(puVar34 + -0x108);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x108)" identifier = (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar34[-0x84] = 0;\n          }" { (expression_statement "puVar34[-0x84] = 0;" (assignment_expression "puVar34[-0x84] = 0" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" else (compound_statement "{\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" { (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = (int)(char)*pbVar23;" (assignment_expression "iVar9 = (int)(char)*pbVar23" identifier = (cast_expression "(int)(char)*pbVar23" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar23" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar23" * identifier)))) ;) (expression_statement "puVar34[-0x6c] = 1;" (assignment_expression "puVar34[-0x6c] = 1" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar34 + -0x68) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x68) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_0002dae8:\n        iVar11 = unaff_s2 * 4;" statement_identifier : (expression_statement "iVar11 = unaff_s2 * 4;" (assignment_expression "iVar11 = unaff_s2 * 4" identifier = (binary_expression "unaff_s2 * 4" identifier * number_literal)) ;)) (if_statement "if (iVar9 == 0) goto LAB_0002db40;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002db40;" goto statement_identifier ;)) (expression_statement "pbVar43 = param_1 + unaff_s2 * 0x28;" (assignment_expression "pbVar43 = param_1 + unaff_s2 * 0x28" identifier = (binary_expression "param_1 + unaff_s2 * 0x28" identifier + (binary_expression "unaff_s2 * 0x28" identifier * number_literal))) ;) (if_statement "if (pbVar43[8] == 0) goto LAB_0002da00;" if (parenthesized_expression "(pbVar43[8] == 0)" ( (binary_expression "pbVar43[8] == 0" (subscript_expression "pbVar43[8]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0002da00;" goto statement_identifier ;)) (if_statement "if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;" if (parenthesized_expression "(*(int *)(pbVar43 + 0xc) == iVar9)" ( (binary_expression "*(int *)(pbVar43 + 0xc) == iVar9" (pointer_expression "*(int *)(pbVar43 + 0xc)" * (cast_expression "(int *)(pbVar43 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar43 + 0xc)" ( (binary_expression "pbVar43 + 0xc" identifier + number_literal) )))) == identifier) )) (goto_statement "goto code_r0x0002db14;" goto statement_identifier ;)) (goto_statement "goto LAB_0002da10;" goto statement_identifier ;) })) }))) (expression_statement "pbVar23 = *(byte **)(iVar9 + iVar11);" (assignment_expression "pbVar23 = *(byte **)(iVar9 + iVar11)" identifier = (pointer_expression "*(byte **)(iVar9 + iVar11)" * (cast_expression "(byte **)(iVar9 + iVar11)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + iVar11)" ( (binary_expression "iVar9 + iVar11" identifier + identifier) ))))) ;) (expression_statement "*(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;" (assignment_expression "*(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = (binary_expression "unaff_s2 - (int)pbVar23" identifier - (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }" if (parenthesized_expression "(pbVar23 != (byte *)0x0)" ( (binary_expression "pbVar23 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }" { (if_statement "if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }" if (parenthesized_expression "(puVar34[-0xb0] != '\0')" ( (binary_expression "puVar34[-0xb0] != '\0'" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;" if (parenthesized_expression "(puVar34[-0xa4] != '\0')" ( (binary_expression "puVar34[-0xa4] != '\0'" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ddcc;" goto statement_identifier ;)) (goto_statement "goto LAB_0002dd64;" goto statement_identifier ;) })) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002dd80:\n      pbVar6 = pbVar28;" statement_identifier : (expression_statement "pbVar6 = pbVar28;" (assignment_expression "pbVar6 = pbVar28" identifier = identifier) ;)) (if_statement "if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;" if (parenthesized_expression "(puVar34[-0xbc] != '\0')" ( (binary_expression "puVar34[-0xbc] != '\0'" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ddf4;" goto statement_identifier ;)) (expression_statement "pbVar6 = (byte *)(uint)*pbVar28;" (assignment_expression "pbVar6 = (byte *)(uint)*pbVar28" identifier = (binary_expression "(byte *)(uint)*pbVar28" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar28 >> 5) * 4" (call_expression "(uint)(*pbVar28 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar28 >> 5)" ( (binary_expression "*pbVar28 >> 5" (pointer_expression "*pbVar28" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pbVar6 & 0x1f)" ( (binary_expression "(uint)pbVar6 & 0x1f" (cast_expression "(uint)pbVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002dddc;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar28;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar28" identifier = (cast_expression "(byte *)(int)(char)*pbVar28" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar28" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar28" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar28" * identifier))))) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xa0) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xa0) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b80)" * (cast_expression "(code **)(iVar15 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b80)" ( (binary_expression "iVar15 + -0x7b80" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002dd64;" goto statement_identifier ;)) (labeled_statement "LAB_0002ddd4:\n      (*pcVar33)();" statement_identifier : (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);" statement_identifier : (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;)) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;)) (expression_statement "puVar34[-0xbc] = 1;" (assignment_expression "puVar34[-0xbc] = 1" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar6 = pbVar28;" (assignment_expression "pbVar6 = pbVar28" identifier = identifier) ;) (labeled_statement "LAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier (argument_list "(unaff_s5,pbVar6,pbVar24,unaff_s4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0xa8) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xa8) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }" { (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" identifier = (cast_expression "(byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" ( (binary_expression "*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8)" (pointer_expression "*(int *)(puVar34 + -0xac)" * (cast_expression "(int *)(puVar34 + -0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto joined_r0x0002dea0;" goto statement_identifier ;) })) (expression_statement "pcVar30 = *(char **)(puVar34 + -0xac);" (assignment_expression "pcVar30 = *(char **)(puVar34 + -0xac)" identifier = (pointer_expression "*(char **)(puVar34 + -0xac)" * (cast_expression "(char **)(puVar34 + -0xac)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pcVar30)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002dd68;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }" { (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar30 != '\0') goto LAB_0002e098;" if (parenthesized_expression "(*pcVar30 != '\0')" ( (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (if_statement "if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x0002def0;" goto statement_identifier ;)) }) (else_clause "else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" else (compound_statement "{\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) }))) (expression_statement "unaff_s2 = 1;" (assignment_expression "unaff_s2 = 1" identifier = number_literal) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar34[-0xbc] = 0;\n      }" { (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ddcc;" goto statement_identifier ;) })) (expression_statement "cVar14 = puVar34[-0x78];" (assignment_expression "cVar14 = puVar34[-0x78]" identifier = (subscript_expression "puVar34[-0x78]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x0002d9dc;" goto statement_identifier ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "pbVar23 = (byte *)0x2;" (assignment_expression "pbVar23 = (byte *)0x2" identifier = (cast_expression "(byte *)0x2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar24 = param_1;" (assignment_expression "pbVar24 = param_1" identifier = identifier) ;) (labeled_statement "LAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];" statement_identifier : (expression_statement "pbVar28 = (byte *)(uint)pbVar24[0x30];" (assignment_expression "pbVar28 = (byte *)(uint)pbVar24[0x30]" identifier = (cast_expression "(byte *)(uint)pbVar24[0x30]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)pbVar24[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar24[0x30]" identifier [ number_literal ])))) ;)) (do_statement "do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );" do (compound_statement "{\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  }" { (expression_statement "pbVar10 = param_1 + iVar9 * 0x28;" (assignment_expression "pbVar10 = param_1 + iVar9 * 0x28" identifier = (binary_expression "param_1 + iVar9 * 0x28" identifier + (binary_expression "iVar9 * 0x28" identifier * number_literal))) ;) (if_statement "if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" if (parenthesized_expression "((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0))" ( (binary_expression "(pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)" (parenthesized_expression "(pbVar28 == (byte *)0x0)" ( (binary_expression "pbVar28 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pbVar10[8] == 0)" ( (binary_expression "pbVar10[8] == 0" (subscript_expression "pbVar10[8]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }" { (expression_statement "pbVar43 = *(byte **)(pbVar24 + 0x2c);" (assignment_expression "pbVar43 = *(byte **)(pbVar24 + 0x2c)" identifier = (pointer_expression "*(byte **)(pbVar24 + 0x2c)" * (cast_expression "(byte **)(pbVar24 + 0x2c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar24 + 0x2c)" ( (binary_expression "pbVar24 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" if (parenthesized_expression "(pbVar43 == *(byte **)(pbVar10 + 4))" ( (binary_expression "pbVar43 == *(byte **)(pbVar10 + 4)" identifier == (pointer_expression "*(byte **)(pbVar10 + 4)" * (cast_expression "(byte **)(pbVar10 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar10 + 4)" ( (binary_expression "pbVar10 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" { (expression_statement "pbVar6 = *(byte **)pbVar10;" (assignment_expression "pbVar6 = *(byte **)pbVar10" identifier = (pointer_expression "*(byte **)pbVar10" * (cast_expression "(byte **)pbVar10" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28))" identifier = (call_expression "(**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28))" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" ( (pointer_expression "**(code **)(iVar15 + -0x79c0)" * (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(pbVar24 + 0x28))" ( (pointer_expression "*(undefined4 *)(pbVar24 + 0x28)" * (cast_expression "(undefined4 *)(pbVar24 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar24 + 0x28)" ( (binary_expression "pbVar24 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }" { (expression_statement "iVar11 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002d964;" goto statement_identifier ;) })) })) }) (else_clause "else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" else (compound_statement "{\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" { (expression_statement "iVar11 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }" if (parenthesized_expression "(*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc))" ( (binary_expression "*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)" (pointer_expression "*(int *)(pbVar24 + 0x34)" * (cast_expression "(int *)(pbVar24 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar24 + 0x34)" ( (binary_expression "pbVar24 + 0x34" identifier + number_literal) )))) == (pointer_expression "*(int *)(pbVar10 + 0xc)" * (cast_expression "(int *)(pbVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar10 + 0xc)" ( (binary_expression "pbVar10 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }" { (labeled_statement "LAB_0002d964:\n        iVar9 = iVar9 + 1;" statement_identifier : (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;)) (expression_statement "*(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;" (assignment_expression "*(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9" (pointer_expression "*(int *)(iVar11 + (int)pbVar23 * 4)" * (cast_expression "(int *)(iVar11 + (int)pbVar23 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (int)pbVar23 * 4)" ( (binary_expression "iVar11 + (int)pbVar23 * 4" identifier + (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = (binary_expression "(int)pbVar23 - iVar9" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (goto_statement "goto LAB_0002d978;" goto statement_identifier ;) })) }))) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);" (assignment_expression "iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" identifier = (binary_expression "iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" identifier - (pointer_expression "*(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" * (cast_expression "(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" ( (binary_expression "*(int *)(puVar34 + -0xfc) + iVar9 * 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (expression_statement "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;" (assignment_expression "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23" (pointer_expression "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" * (cast_expression "(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" ( (binary_expression "*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) + (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = identifier) ;) (labeled_statement "LAB_0002d978:\n  pbVar23 = pbVar23 + 1;" statement_identifier : (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar24 = pbVar24 + 0x28;" (assignment_expression "pbVar24 = pbVar24 + 0x28" identifier = (binary_expression "pbVar24 + 0x28" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;" if (parenthesized_expression "(*(byte **)(puVar34 + -0x104) == pbVar23)" ( (binary_expression "*(byte **)(puVar34 + -0x104) == pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x104)" * (cast_expression "(byte **)(puVar34 + -0x104)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_0002d988;" goto statement_identifier ;)) (goto_statement "goto LAB_0002d8f0;" goto statement_identifier ;) (labeled_statement "code_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);" statement_identifier : (expression_statement "pbVar28 = *(byte **)(puVar34 + -0x70);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0x70)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x70)" * (cast_expression "(byte **)(puVar34 + -0x70)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) ))))) ;)) (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;" statement_identifier : (expression_statement "pbVar23 = pbVar23 + (int)pbVar28;" (assignment_expression "pbVar23 = pbVar23 + (int)pbVar28" identifier = (binary_expression "pbVar23 + (int)pbVar28" identifier + (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "unaff_s2 = unaff_s2 + 1;" (assignment_expression "unaff_s2 = unaff_s2 + 1" identifier = (binary_expression "unaff_s2 + 1" identifier + number_literal)) ;) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0x74) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0x74) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }" if (parenthesized_expression "(*(int *)(puVar34 + -0x104) == unaff_s2)" ( (binary_expression "*(int *)(puVar34 + -0x104) == unaff_s2" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }" { (expression_statement "**(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);" (assignment_expression "**(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac)" (pointer_expression "**(undefined4 **)(puVar34 + -0x110)" * (pointer_expression "*(undefined4 **)(puVar34 + -0x110)" * (cast_expression "(undefined4 **)(puVar34 + -0x110)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x110)" ( (binary_expression "puVar34 + -0x110" identifier + number_literal) ))))) = (pointer_expression "*(undefined4 *)(puVar34 + -0xac)" * (cast_expression "(undefined4 *)(puVar34 + -0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);" statement_identifier : (expression_statement "(**(code **)(iVar15 + -0x7ca0))(param_1);" (call_expression "(**(code **)(iVar15 + -0x7ca0))(param_1)" (parenthesized_expression "(**(code **)(iVar15 + -0x7ca0))" ( (pointer_expression "**(code **)(iVar15 + -0x7ca0)" * (pointer_expression "*(code **)(iVar15 + -0x7ca0)" * (cast_expression "(code **)(iVar15 + -0x7ca0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7ca0)" ( (binary_expression "iVar15 + -0x7ca0" identifier + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;)) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002db5c;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002daa0;" goto statement_identifier ;) (labeled_statement "LAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);" statement_identifier : (expression_statement "pcVar30 = *(char **)(puVar34 + -0xac);" (assignment_expression "pcVar30 = *(char **)(puVar34 + -0xac)" identifier = (pointer_expression "*(char **)(puVar34 + -0xac)" * (cast_expression "(char **)(puVar34 + -0xac)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002dd68:\n  puVar34[-0xb0] = 0;" statement_identifier : (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));" (assignment_expression "pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8))" identifier = (cast_expression "(byte *)(pcVar30 + *(int *)(puVar34 + -0xa8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar30 + *(int *)(puVar34 + -0xa8))" ( (binary_expression "pcVar30 + *(int *)(puVar34 + -0xa8)" identifier + (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = identifier) ;) (labeled_statement "joined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;" statement_identifier : (expression_statement "pbVar23 = pbVar23 + -1;" (assignment_expression "pbVar23 = pbVar23 + -1" identifier = (binary_expression "pbVar23 + -1" identifier + number_literal)) ;)) (if_statement "if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }" if (parenthesized_expression "(pbVar23 == (byte *)0x0)" ( (binary_expression "pbVar23 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }" { (expression_statement "cVar14 = puVar34[-0x78];" (assignment_expression "cVar14 = puVar34[-0x78]" identifier = (subscript_expression "puVar34[-0x78]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2 = *(int *)(puVar34 + -0x108);" (assignment_expression "unaff_s2 = *(int *)(puVar34 + -0x108)" identifier = (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0002d9dc;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002dd80;" goto statement_identifier ;) (labeled_statement "code_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" statement_identifier : (expression_statement "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;)) (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x114" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , identifier , number_literal , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_0002df14:\n  puVar34[-0x6c] = 0;" statement_identifier : (expression_statement "puVar34[-0x6c] = 0;" (assignment_expression "puVar34[-0x6c] = 0" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d9f0;" goto statement_identifier ;) (labeled_statement "LAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar35 + -0xc4)" * (cast_expression "(int *)(puVar35 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc0)" * (cast_expression "(byte **)(puVar35 + -0xc0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;" statement_identifier : (expression_statement "pbVar29 = unaff_s5 + iVar9;" (assignment_expression "pbVar29 = unaff_s5 + iVar9" identifier = (binary_expression "unaff_s5 + iVar9" identifier + identifier)) ;)) (expression_statement "puVar35[-200] = 0;" (assignment_expression "puVar35[-200] = 0" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xc4) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xc4) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xc4)" * (cast_expression "(byte **)(puVar35 + -0xc4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;" (assignment_expression "*(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar35 + -0x160) + 1" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;" if (parenthesized_expression "(puVar35[-0xd4] == '\0')" ( (binary_expression "puVar35[-0xd4] == '\0'" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e3c4;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e6f4;" goto statement_identifier ;) (labeled_statement "LAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);" statement_identifier : (expression_statement "pbVar31 = *(byte **)(puVar35 + -0x148);" (assignment_expression "pbVar31 = *(byte **)(puVar35 + -0x148)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x148)" * (cast_expression "(byte **)(puVar35 + -0x148)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x148)" ( (binary_expression "puVar35 + -0x148" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) (labeled_statement "LAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;" statement_identifier : (expression_statement "pbVar6 = (byte *)0xffffffff;" (assignment_expression "pbVar6 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_0002f060;" goto statement_identifier ;) (labeled_statement "LAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);" statement_identifier : (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xe8" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_0002e0bc:\n  pbVar24 = &DAT_00000096;" statement_identifier : (expression_statement "pbVar24 = &DAT_00000096;" (assignment_expression "pbVar24 = &DAT_00000096" identifier = (pointer_expression "&DAT_00000096" & identifier)) ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7bb0);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7bb0)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);" (assignment_expression "pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x100)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0002e0e0:\n  pcVar42 = mbsstr;" statement_identifier : (expression_statement "pcVar42 = mbsstr;" (assignment_expression "pcVar42 = mbsstr" identifier = identifier) ;)) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x47b00)" identifier = (pointer_expression "*(undefined4 **)(pcVar33 + 0x47b00)" * (cast_expression "(undefined4 **)(pcVar33 + 0x47b00)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x47b00)" ( (binary_expression "pcVar33 + 0x47b00" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x47a80);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x47a80)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x47a80)" * (cast_expression "(code **)(pcVar33 + 0x47a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x47a80)" ( (binary_expression "pcVar33 + 0x47a80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar35 + -0x154) = puVar8;" (assignment_expression "*(undefined4 **)(puVar35 + -0x154) = puVar8" (pointer_expression "*(undefined4 **)(puVar35 + -0x154)" * (cast_expression "(undefined4 **)(puVar35 + -0x154)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x154)" ( (binary_expression "puVar35 + -0x154" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;" (assignment_expression "*(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498" (pointer_expression "*(code **)(puVar35 + -0x170)" * (cast_expression "(code **)(puVar35 + -0x170)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4f498" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x1c) = unaff_s3;" (assignment_expression "*(undefined1 **)(puVar35 + -0x1c) = unaff_s3" (pointer_expression "*(undefined1 **)(puVar35 + -0x1c)" * (cast_expression "(undefined1 **)(puVar35 + -0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1c)" ( (binary_expression "puVar35 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar35 + -0x20) = unaff_s2;" (assignment_expression "*(int *)(puVar35 + -0x20) = unaff_s2" (pointer_expression "*(int *)(puVar35 + -0x20)" * (cast_expression "(int *)(puVar35 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x20)" ( (binary_expression "puVar35 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -4) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -4) = pcVar42" (pointer_expression "*(code **)(puVar35 + -4)" * (cast_expression "(code **)(puVar35 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -4)" ( (binary_expression "puVar35 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;" (assignment_expression "*(undefined1 **)(puVar35 + -8) = puVar34 + -0x128" (pointer_expression "*(undefined1 **)(puVar35 + -8)" * (cast_expression "(undefined1 **)(puVar35 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -8)" ( (binary_expression "puVar35 + -8" identifier + number_literal) )))) = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar35 + -0xc) = pbVar23;" (assignment_expression "*(byte **)(puVar35 + -0xc) = pbVar23" (pointer_expression "*(byte **)(puVar35 + -0xc)" * (cast_expression "(byte **)(puVar35 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc)" ( (binary_expression "puVar35 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar35 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar35 + -0x10)" * (cast_expression "(byte **)(puVar35 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x10)" ( (binary_expression "puVar35 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x14) = unaff_s5;" (assignment_expression "*(byte **)(puVar35 + -0x14) = unaff_s5" (pointer_expression "*(byte **)(puVar35 + -0x14)" * (cast_expression "(byte **)(puVar35 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14)" ( (binary_expression "puVar35 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x18) = unaff_s4;" (assignment_expression "*(byte **)(puVar35 + -0x18) = unaff_s4" (pointer_expression "*(byte **)(puVar35 + -0x18)" * (cast_expression "(byte **)(puVar35 + -0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x18)" ( (binary_expression "puVar35 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x24) = pbVar28;" (assignment_expression "*(byte **)(puVar35 + -0x24) = pbVar28" (pointer_expression "*(byte **)(puVar35 + -0x24)" * (cast_expression "(byte **)(puVar35 + -0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x24)" ( (binary_expression "puVar35 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x28) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x28) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x28)" * (cast_expression "(byte **)(puVar35 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x28)" ( (binary_expression "puVar35 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x2c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar35 + -0x2c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar35 + -0x2c)" * (cast_expression "(undefined4 *)(puVar35 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x2c)" ( (binary_expression "puVar35 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "uVar5 = (*pcVar40)();" (assignment_expression "uVar5 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar31 = pbVar10;" (assignment_expression "pbVar31 = pbVar10" identifier = identifier) ;) (if_statement "if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" if (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 2" identifier < number_literal) )) (compound_statement "{\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }" { (expression_statement "unaff_s6 = (byte *)(int)(char)*pbVar6;" (assignment_expression "unaff_s6 = (byte *)(int)(char)*pbVar6" identifier = (cast_expression "(byte *)(int)(char)*pbVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar6" * identifier))))) ;) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" identifier = identifier) ;) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }" if (parenthesized_expression "(unaff_s6 != (byte *)0x0)" ( (binary_expression "unaff_s6 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }" { (expression_statement "pbVar29 = pbVar6 + 1;" (assignment_expression "pbVar29 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }" if (parenthesized_expression "(*pbVar10 != 0)" ( (binary_expression "*pbVar10 != 0" (pointer_expression "*pbVar10" * identifier) != number_literal) )) (compound_statement "{\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }" { (expression_statement "pbVar23 = (byte *)0x0;" (assignment_expression "pbVar23 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (byte *)0x0;" (assignment_expression "unaff_s5 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "puVar37 = puVar35 + -0x148;" (assignment_expression "puVar37 = puVar35 + -0x148" identifier = (binary_expression "puVar35 + -0x148" identifier + number_literal)) ;) (expression_statement "param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);" (assignment_expression "param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -32000) + -0x2b80)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2b80)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2b80" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar28 = pbVar6;" (assignment_expression "pbVar28 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar10;" (assignment_expression "pbVar26 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar4 = (byte *)0x0;" (assignment_expression "pbVar4 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);" statement_identifier : (do_statement "do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);" do (compound_statement "{\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        }" { (expression_statement "unaff_s4 = pbVar4;" (assignment_expression "unaff_s4 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar31 = pbVar26;" (assignment_expression "pbVar31 = pbVar26" identifier = identifier) ;) (expression_statement "pbVar10 = pbVar31;" (assignment_expression "pbVar10 = pbVar31" identifier = identifier) ;) (if_statement "if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }" if (parenthesized_expression "(((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4))" ( (binary_expression "((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)" (parenthesized_expression "((iVar9 != 0) && (&DAT_00000009 < unaff_s5))" ( (binary_expression "(iVar9 != 0) && (&DAT_00000009 < unaff_s5)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "(&DAT_00000009 < unaff_s5)" ( (binary_expression "&DAT_00000009 < unaff_s5" (pointer_expression "&DAT_00000009" & identifier) < identifier) ))) )) && (parenthesized_expression "((byte *)((int)unaff_s5 * 5) <= unaff_s4)" ( (binary_expression "(byte *)((int)unaff_s5 * 5) <= unaff_s4" (cast_expression "(byte *)((int)unaff_s5 * 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 * 5)" ( (binary_expression "(int)unaff_s5 * 5" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) <= identifier) ))) )) (compound_statement "{\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }" { (expression_statement "*(int *)(puVar35 + -0x168) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x168) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }" { (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7af4);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7af4)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7af4)" * (cast_expression "(code **)(iVar15 + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7af4)" ( (binary_expression "iVar15 + -0x7af4" identifier + number_literal) ))))) ;) (expression_statement "pbVar43 = unaff_s4 + -(int)pbVar23;" (assignment_expression "pbVar43 = unaff_s4 + -(int)pbVar23" identifier = (binary_expression "unaff_s4 + -(int)pbVar23" identifier + (unary_expression "-(int)pbVar23" - (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "*(byte **)(puVar35 + -0x164) = pbVar28;" (assignment_expression "*(byte **)(puVar35 + -0x164) = pbVar28" (pointer_expression "*(byte **)(puVar35 + -0x164)" * (cast_expression "(byte **)(puVar35 + -0x164)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = (*pcVar33)(pbVar28);" (assignment_expression "iVar9 = (*pcVar33)(pbVar28)" identifier = (call_expression "(*pcVar33)(pbVar28)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(pbVar28)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9)" identifier = (cast_expression "(byte *)(*(int *)(puVar35 + -0x164) + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x164) + iVar9)" ( (binary_expression "*(int *)(puVar35 + -0x164) + iVar9" (pointer_expression "*(int *)(puVar35 + -0x164)" * (cast_expression "(int *)(puVar35 + -0x164)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar9 = *(int *)(puVar35 + -0x168);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0x168)" identifier = (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = unaff_s4;" (assignment_expression "pbVar23 = unaff_s4" identifier = identifier) ;) (if_statement "if (*pbVar28 != 0) goto LAB_0002e218;" if (parenthesized_expression "(*pbVar28 != 0)" ( (binary_expression "*pbVar28 != 0" (pointer_expression "*pbVar28" * identifier) != number_literal) )) (goto_statement "goto LAB_0002e218;" goto statement_identifier ;)) })) (expression_statement "pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);" (assignment_expression "pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6)" identifier = (cast_expression "(byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar15 + -0x7a8c))(pbVar6)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pbVar6)" ( identifier ))))) ;) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);" (assignment_expression "iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37)" identifier = (call_expression "FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37)" identifier (argument_list "(pbVar31,pbVar6,pbVar24,puVar37)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) goto LAB_0002ef34;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002ef34;" goto statement_identifier ;)) (expression_statement "pbVar28 = (byte *)0x0;" (assignment_expression "pbVar28 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) })) (labeled_statement "LAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;" statement_identifier : (expression_statement "unaff_s5 = unaff_s5 + 1;" (assignment_expression "unaff_s5 = unaff_s5 + 1" identifier = (binary_expression "unaff_s5 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar26 = pbVar31 + 1;" (assignment_expression "pbVar26 = pbVar31 + 1" identifier = (binary_expression "pbVar31 + 1" identifier + number_literal)) ;) (if_statement "if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }" if (parenthesized_expression "((byte *)(int)(char)*pbVar31 == unaff_s6)" ( (binary_expression "(byte *)(int)(char)*pbVar31 == unaff_s6" (cast_expression "(byte *)(int)(char)*pbVar31" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar31" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar31" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar31" * identifier)))) == identifier) )) (compound_statement "{\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }" { (if_statement "if (pbVar6[1] == 0) goto LAB_0002e2ac;" if (parenthesized_expression "(pbVar6[1] == 0)" ( (binary_expression "pbVar6[1] == 0" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (if_statement "if (*pbVar26 == 0) break;" if (parenthesized_expression "(*pbVar26 == 0)" ( (binary_expression "*pbVar26 == 0" (pointer_expression "*pbVar26" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar4 = unaff_s4 + 2;" (assignment_expression "pbVar4 = unaff_s4 + 2" identifier = (binary_expression "unaff_s4 + 2" identifier + number_literal)) ;) (if_statement "if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }" if (parenthesized_expression "(pbVar6[1] == *pbVar26)" ( (binary_expression "pbVar6[1] == *pbVar26" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) == (pointer_expression "*pbVar26" * identifier)) )) (compound_statement "{\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }" { (expression_statement "pbVar17 = pbVar6 + 2;" (assignment_expression "pbVar17 = pbVar6 + 2" identifier = (binary_expression "pbVar6 + 2" identifier + number_literal)) ;) (expression_statement "pbVar21 = pbVar26;" (assignment_expression "pbVar21 = pbVar26" identifier = identifier) ;) (do_statement "do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);" do (compound_statement "{\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              }" { (expression_statement "pbVar43 = (byte *)(int)(char)*pbVar17;" (assignment_expression "pbVar43 = (byte *)(int)(char)*pbVar17" identifier = (cast_expression "(byte *)(int)(char)*pbVar17" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar17" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar17" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar17" * identifier))))) ;) (expression_statement "pbVar21 = pbVar21 + 1;" (assignment_expression "pbVar21 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;" if (parenthesized_expression "(pbVar43 == (byte *)0x0)" ( (binary_expression "pbVar43 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (expression_statement "pbVar24 = (byte *)(int)(char)*pbVar21;" (assignment_expression "pbVar24 = (byte *)(int)(char)*pbVar21" identifier = (cast_expression "(byte *)(int)(char)*pbVar21" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar21" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar21" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar21" * identifier))))) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;" if (parenthesized_expression "(pbVar24 == (byte *)0x0)" ( (binary_expression "pbVar24 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ec;" goto statement_identifier ;)) (expression_statement "pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);" (assignment_expression "pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6)" identifier = (binary_expression "unaff_s4 + ((int)pbVar17 - (int)pbVar6)" identifier + (parenthesized_expression "((int)pbVar17 - (int)pbVar6)" ( (binary_expression "(int)pbVar17 - (int)pbVar6" (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) while (parenthesized_expression "(pbVar43 == pbVar24)" ( (binary_expression "pbVar43 == pbVar24" identifier == identifier) )) ;) })) (goto_statement "goto LAB_0002e18c;" goto statement_identifier ;) })) (expression_statement "pbVar4 = unaff_s4 + 1;" (assignment_expression "pbVar4 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar31[1] != 0)" ( (binary_expression "pbVar31[1] != 0" (subscript_expression "pbVar31[1]" identifier [ number_literal ]) != number_literal) )) ;)) })) (labeled_statement "LAB_0002e2ec:\n      pbVar31 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) })) (labeled_statement "LAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);" statement_identifier : (expression_statement "pbVar28 = *(byte **)(puVar35 + -0x2c);" (assignment_expression "pbVar28 = *(byte **)(puVar35 + -0x2c)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x2c)" * (cast_expression "(byte **)(puVar35 + -0x2c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x2c)" ( (binary_expression "puVar35 + -0x2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }" if (parenthesized_expression "(pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154))" ( (binary_expression "pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)" identifier == (cast_expression "(byte *)**(undefined4 **)(puVar35 + -0x154)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar35 + -0x154)" * (pointer_expression "*(undefined4 **)(puVar35 + -0x154)" * (cast_expression "(undefined4 **)(puVar35 + -0x154)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x154)" ( (binary_expression "puVar35 + -0x154" identifier + number_literal) ))))))) )) (compound_statement "{\n      return pbVar31;\n    }" { (return_statement "return pbVar31;" return identifier ;) })) }) (else_clause "else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" else (compound_statement "{\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" { (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (expression_statement "pbVar29 = (byte *)(int)(char)bVar20;" (assignment_expression "pbVar29 = (byte *)(int)(char)bVar20" identifier = (cast_expression "(byte *)(int)(char)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)bVar20" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar20" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (expression_statement "param_1 = puVar35 + -0x140;" (assignment_expression "param_1 = puVar35 + -0x140" identifier = (binary_expression "puVar35 + -0x140" identifier + number_literal)) ;) (expression_statement "iVar9 = *(int *)(iVar15 + -0x7c98);" (assignment_expression "iVar9 = *(int *)(iVar15 + -0x7c98)" identifier = (pointer_expression "*(int *)(iVar15 + -0x7c98)" * (cast_expression "(int *)(iVar15 + -0x7c98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7c98)" ( (binary_expression "iVar15 + -0x7c98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x140) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x140) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x140)" * (cast_expression "(undefined4 *)(puVar35 + -0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x140)" ( (binary_expression "puVar35 + -0x140" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar43 = (byte *)(uint)bVar20;" (assignment_expression "pbVar43 = (byte *)(uint)bVar20" identifier = (cast_expression "(byte *)(uint)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x13c)" * (cast_expression "(undefined4 *)(puVar35 + -0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x13c)" ( (binary_expression "puVar35 + -0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x168) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x168) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x134) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x134) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x134)" * (cast_expression "(byte **)(puVar35 + -0x134)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x144] = 0;" (assignment_expression "puVar35[-0x144] = 0" (subscript_expression "puVar35[-0x144]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" identifier = (pointer_expression "*(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "iVar9 + (uint)(bVar20 >> 5) * 4" identifier + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "puVar35[-0x138] = 0;" (assignment_expression "puVar35[-0x138] = 0" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }" if (parenthesized_expression "((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar5 >> ((uint)pbVar43 & 0x1f) & 1)" ( (binary_expression "uVar5 >> ((uint)pbVar43 & 0x1f) & 1" (binary_expression "uVar5 >> ((uint)pbVar43 & 0x1f)" identifier >> (parenthesized_expression "((uint)pbVar43 & 0x1f)" ( (binary_expression "(uint)pbVar43 & 0x1f" (cast_expression "(uint)pbVar43" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }" { (expression_statement "*(byte **)(puVar35 + -0x128) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x128) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x128)" * (cast_expression "(byte **)(puVar35 + -0x128)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-300] = 1;" (assignment_expression "puVar35[-300] = 1" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" statement_identifier : (if_statement "if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" { (labeled_statement "LAB_0002e360:\n        puVar35[-0xd4] = 0;" statement_identifier : (expression_statement "puVar35[-0xd4] = 0;" (assignment_expression "puVar35[-0xd4] = 0" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "unaff_s4 = puVar35 + -0x108;" (assignment_expression "unaff_s4 = puVar35 + -0x108" identifier = (binary_expression "puVar35 + -0x108" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x108) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x108) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x108)" * (cast_expression "(undefined4 *)(puVar35 + -0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x108)" ( (binary_expression "puVar35 + -0x108" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" * (cast_expression "(undefined4 *)(puVar35 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar37 = puVar35 + -0xd0;" (assignment_expression "puVar37 = puVar35 + -0xd0" identifier = (binary_expression "puVar35 + -0xd0" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xd0) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0xd0) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0xd0)" * (cast_expression "(undefined4 *)(puVar35 + -0xd0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xd0)" ( (binary_expression "puVar35 + -0xd0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;" (assignment_expression "*(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4" (pointer_expression "*(undefined1 **)(puVar35 + -0x158)" * (cast_expression "(undefined1 **)(puVar35 + -0x158)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x158)" ( (binary_expression "puVar35 + -0x158" identifier + number_literal) )))) = (binary_expression "puVar35 + -0xa4" identifier + number_literal)) ;) (expression_statement "param_1 = (byte *)0x0;" (assignment_expression "param_1 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = *(int *)(iVar15 + -32000);" (assignment_expression "iVar9 = *(int *)(iVar15 + -32000)" identifier = (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = puVar35 + -0x80;" (assignment_expression "pbVar23 = puVar35 + -0x80" identifier = (binary_expression "puVar35 + -0x80" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x104) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x104) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x104)" * (cast_expression "(undefined4 *)(puVar35 + -0x104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x104)" ( (binary_expression "puVar35 + -0x104" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xcc) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0xcc) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0xcc)" * (cast_expression "(undefined4 *)(puVar35 + -0xcc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xcc)" ( (binary_expression "puVar35 + -0xcc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xfc) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0xfc) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x160) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x160) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x160)" * (cast_expression "(undefined4 *)(puVar35 + -0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;" (assignment_expression "*(int *)(puVar35 + -0x14c) = iVar9 + -0x2954" (pointer_expression "*(int *)(puVar35 + -0x14c)" * (cast_expression "(int *)(puVar35 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x14c)" ( (binary_expression "puVar35 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar9 + -0x2954" identifier + number_literal)) ;) (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x150) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x150) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x150)" * (cast_expression "(undefined4 *)(puVar35 + -0x150)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x100] = 0;" (assignment_expression "puVar35[-0x100] = 0" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xc4) = pbVar10;" (assignment_expression "*(byte **)(puVar35 + -0xc4) = pbVar10" (pointer_expression "*(byte **)(puVar35 + -0xc4)" * (cast_expression "(byte **)(puVar35 + -0xc4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-200] = 0;" (assignment_expression "puVar35[-200] = 0" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar29 = pbVar10;" (assignment_expression "pbVar29 = pbVar10" identifier = identifier) ;) (if_statement "if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;" if (parenthesized_expression "(puVar35[-0xd4] != '\0')" ( (binary_expression "puVar35[-0xd4] != '\0'" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e6f4;" goto statement_identifier ;)) (labeled_statement "LAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" statement_identifier : (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar29 >> 5)" ( (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar29 & 0x1f)" ( (binary_expression "*pbVar29 & 0x1f" (pointer_expression "*pbVar29" * identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" { (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" identifier = (cast_expression "(byte *)(int)(char)*pbVar29" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar29" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar29" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar29" * identifier))))) ;) (expression_statement "puVar35[-0xbc] = 1;" (assignment_expression "puVar35[-0xbc] = 1" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xb8) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xb8) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xb8)" * (cast_expression "(byte **)(puVar35 + -0xb8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0002e404;" goto statement_identifier ;) }))) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(puVar37)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(puVar37)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }" { (expression_statement "puVar35[-0xd4] = 1;" (assignment_expression "puVar35[-0xd4] = 1" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar29,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar29,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar29,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar29,uVar41)" identifier (argument_list "(pbVar29,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" identifier (argument_list "(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0xc0) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xc0) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xc0)" * (cast_expression "(int *)(puVar35 + -0xc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }" { (expression_statement "puVar35[-0xbc] = 0;" (assignment_expression "puVar35[-0xbc] = 0" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" else (compound_statement "{\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" { (if_statement "if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }" { (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }" { (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xb8);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xb8)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xb8)" * (cast_expression "(byte **)(puVar35 + -0xb8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0xc4) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0xc4) != '\0'" (pointer_expression "**(char **)(puVar35 + -0xc4)" * (pointer_expression "*(char **)(puVar35 + -0xc4)" * (cast_expression "(char **)(puVar35 + -0xc4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }" { (labeled_statement "LAB_0002ed10:\n                  FUN_0002d670();" statement_identifier : (expression_statement "FUN_0002d670();" (call_expression "FUN_0002d670()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);" statement_identifier : (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" identifier = (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;)) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" identifier = identifier) ;) (labeled_statement "LAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;" statement_identifier : (expression_statement "unaff_s5 = puVar35 + -0x48;" (assignment_expression "unaff_s5 = puVar35 + -0x48" identifier = (binary_expression "puVar35 + -0x48" identifier + number_literal)) ;)) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s6 = puVar35 + -0x98;" (assignment_expression "unaff_s6 = puVar35 + -0x98" identifier = (binary_expression "puVar35 + -0x98" identifier + number_literal)) ;) (expression_statement "pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));" (assignment_expression "pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50))" identifier = (cast_expression "(byte *)(pcVar30 + *(int *)(puVar35 + -0x50))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar30 + *(int *)(puVar35 + -0x50))" ( (binary_expression "pcVar30 + *(int *)(puVar35 + -0x50)" identifier + (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar43;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar43" (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) = identifier) ;) (do_statement "do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );" do (compound_statement "{\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" if (parenthesized_expression "(puVar35[-100] == '\0')" ( (binary_expression "puVar35[-100] == '\0'" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }" { (expression_statement "bVar20 = *pbVar43;" (assignment_expression "bVar20 = *pbVar43" identifier = (pointer_expression "*pbVar43" * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }" { (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164))" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = pbVar43;" (assignment_expression "pbVar29 = pbVar43" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }" { (expression_statement "puVar35[-100] = 1;" (assignment_expression "puVar35[-100] = 1" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e630;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar43;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar43" identifier = (cast_expression "(byte *)(int)(char)*pbVar43" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar43" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar43" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar43" * identifier))))) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0x48) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x48) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar43 = (byte *)(uint)bVar20;" (assignment_expression "pbVar43 = (byte *)(uint)bVar20" identifier = (cast_expression "(byte *)(uint)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "joined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" statement_identifier : (if_statement "if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" { (expression_statement "pbVar31 = *(byte **)(puVar35 + -0xc4);" (assignment_expression "pbVar31 = *(byte **)(puVar35 + -0xc4)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc4)" * (cast_expression "(byte **)(puVar35 + -0xc4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) }))) }) (else_clause "else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" else (compound_statement "{\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" { (labeled_statement "LAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar43,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar43,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar43,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar43,uVar41)" identifier (argument_list "(pbVar43,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" identifier = (call_expression "rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" identifier (argument_list "(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x50) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x50) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }" { (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" else (compound_statement "{\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" { (if_statement "if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }" { (if_statement "if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }" { (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0x54) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0x54) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x54)" * (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" else (compound_statement "{\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" identifier = (call_expression "(*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                            puVar35[-100] = 0;\n                          }" { (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto joined_r0x0002e574;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x54))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x54)" * (cast_expression "(undefined4 *)(puVar35 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (if_statement "if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" if (parenthesized_expression "(puVar35[-0x90] == '\0')" ( (binary_expression "puVar35[-0x90] == '\0'" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x8c);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x8c)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x8c)" * (cast_expression "(byte **)(puVar35 + -0x8c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }" if (parenthesized_expression "(puVar35[-0x9c] == '\0')" ( (binary_expression "puVar35[-0x9c] == '\0'" (subscript_expression "puVar35[-0x9c]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }" { (expression_statement "pbVar43 = (byte *)(uint)*pbVar29;" (assignment_expression "pbVar43 = (byte *)(uint)*pbVar29" identifier = (binary_expression "(byte *)(uint)*pbVar29" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar29 >> 5)" ( (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pbVar43 & 0x1f)" ( (binary_expression "(uint)pbVar43 & 0x1f" (cast_expression "(uint)pbVar43" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }" { (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" identifier = (cast_expression "(byte *)(int)(char)*pbVar29" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar29" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar29" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar29" * identifier))))) ;) (expression_statement "puVar35[-0x84] = 1;" (assignment_expression "puVar35[-0x84] = 1" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0x80) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x80) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0002e5d0;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s6)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002ef3c;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;)) (expression_statement "puVar35[-0x9c] = 1;" (assignment_expression "puVar35[-0x9c] = 1" (subscript_expression "puVar35[-0x9c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar29,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar29,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar29,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar29,uVar41)" identifier (argument_list "(pbVar29,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);" (assignment_expression "iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6)" identifier = (call_expression "rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6)" identifier (argument_list "(pbVar23,pbVar29,pbVar24,unaff_s6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x88) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x88) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x88)" * (cast_expression "(int *)(puVar35 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }" { (expression_statement "puVar35[-0x84] = 0;" (assignment_expression "puVar35[-0x84] = 0" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" else (compound_statement "{\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" { (if_statement "if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }" { (if_statement "if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }" { (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0x8c) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0x8c) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x8c)" * (pointer_expression "*(char **)(puVar35 + -0x8c)" * (cast_expression "(char **)(puVar35 + -0x8c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" else (compound_statement "{\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0x84] = 1;" (assignment_expression "puVar35[-0x84] = 1" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s6)" identifier = (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                            puVar35[-0x9c] = 0;\n                          }" { (expression_statement "puVar35[-0x9c] = 0;" (assignment_expression "puVar35[-0x9c] = 0" (subscript_expression "puVar35[-0x9c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e5d0;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x8c))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x8c)" * (cast_expression "(undefined4 *)(puVar35 + -0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x88) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x84] = 0;" (assignment_expression "puVar35[-0x84] = 0" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x88)" * (cast_expression "(byte **)(puVar35 + -0x88)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) ))))) ;) (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" identifier = identifier) ;) (labeled_statement "LAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar35 + -0xc4)" * (cast_expression "(int *)(puVar35 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;" if (parenthesized_expression "(pbVar24 != *(byte **)(puVar35 + -0x50))" ( (binary_expression "pbVar24 != *(byte **)(puVar35 + -0x50)" identifier != (pointer_expression "*(byte **)(puVar35 + -0x50)" * (cast_expression "(byte **)(puVar35 + -0x50)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e6cc;" goto statement_identifier ;)) (expression_statement "pbVar43 = *(byte **)(puVar35 + -0x54);" (assignment_expression "pbVar43 = *(byte **)(puVar35 + -0x54)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c))" identifier = (call_expression "(**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c))" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" ( (pointer_expression "**(code **)(iVar15 + -0x79c0)" * (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x8c))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x8c)" * (cast_expression "(undefined4 *)(puVar35 + -0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = iVar9 != 0;" (assignment_expression "bVar2 = iVar9 != 0" identifier = (binary_expression "iVar9 != 0" identifier != number_literal)) ;) }) (else_clause "else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" else (compound_statement "{\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" { (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x88)" * (cast_expression "(byte **)(puVar35 + -0x88)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0x84] == '\0') goto LAB_0002e794;" if (parenthesized_expression "(puVar35[-0x84] == '\0')" ( (binary_expression "puVar35[-0x84] == '\0'" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e794;" goto statement_identifier ;)) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x88)" * (cast_expression "(byte **)(puVar35 + -0x88)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0x4c] == '\0') goto LAB_0002e794;" if (parenthesized_expression "(puVar35[-0x4c] == '\0')" ( (binary_expression "puVar35[-0x4c] == '\0'" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e794;" goto statement_identifier ;)) (expression_statement "bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;" (assignment_expression "bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29" identifier = (binary_expression "*(byte **)(puVar35 + -0x48) != pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) )))) != identifier)) ;) }))) (if_statement "if (bVar2) goto LAB_0002e6c8;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_0002e6c8;" goto statement_identifier ;)) (expression_statement "puVar35[-0x90] = 0;" (assignment_expression "puVar35[-0x90] = 0" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);" (assignment_expression "*(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar35 + -0x88)" * (cast_expression "(int *)(puVar35 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))))) ;) (expression_statement "pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));" (assignment_expression "pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" identifier = (cast_expression "(byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" ( (binary_expression "*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50)" (pointer_expression "*(int *)(puVar35 + -0x54)" * (cast_expression "(int *)(puVar35 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar43;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar43" (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" else (compound_statement "{\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xb8);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xb8)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xb8)" * (cast_expression "(byte **)(puVar35 + -0xb8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0xbc] = 1;" (assignment_expression "puVar35[-0xbc] = 1" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(puVar37);" (assignment_expression "iVar9 = (*pcVar33)(puVar37)" identifier = (call_expression "(*pcVar33)(puVar37)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(puVar37)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                puVar35[-0xd4] = 0;\n              }" { (expression_statement "puVar35[-0xd4] = 0;" (assignment_expression "puVar35[-0xd4] = 0" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002e404:\n              pbVar31 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }" { (if_statement "if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }" if (parenthesized_expression "((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10))" ( (binary_expression "(*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)" (parenthesized_expression "(*(int *)(puVar35 + -0x15c) == 0)" ( (binary_expression "*(int *)(puVar35 + -0x15c) == 0" (pointer_expression "*(int *)(puVar35 + -0x15c)" * (cast_expression "(int *)(puVar35 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(uint *)(puVar35 + -0x160) < 10)" ( (binary_expression "*(uint *)(puVar35 + -0x160) < 10" (pointer_expression "*(uint *)(puVar35 + -0x160)" * (cast_expression "(uint *)(puVar35 + -0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002e448;" goto statement_identifier ;) })) (expression_statement "uVar5 = *(uint *)(puVar35 + -0x15c);" (assignment_expression "uVar5 = *(uint *)(puVar35 + -0x15c)" identifier = (pointer_expression "*(uint *)(puVar35 + -0x15c)" * (cast_expression "(uint *)(puVar35 + -0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) ))))) ;) (if_statement "if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;" if (parenthesized_expression "((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1)" ( (binary_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1" (cast_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x160) * 5)" ( (binary_expression "*(int *)(puVar35 + -0x160) * 5" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) * number_literal) ))) <= identifier) )) (goto_statement "goto LAB_0002e9c8;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e438;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0xc4))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0xc4)" * (cast_expression "(undefined4 *)(puVar35 + -0xc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0xbc] = 0;" (assignment_expression "puVar35[-0xbc] = 0" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }" if (parenthesized_expression "((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10))" ( (binary_expression "(*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)" (parenthesized_expression "(*(int *)(puVar35 + -0x15c) == 0)" ( (binary_expression "*(int *)(puVar35 + -0x15c) == 0" (pointer_expression "*(int *)(puVar35 + -0x15c)" * (cast_expression "(int *)(puVar35 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(uint *)(puVar35 + -0x160) < 10)" ( (binary_expression "*(uint *)(puVar35 + -0x160) < 10" (pointer_expression "*(uint *)(puVar35 + -0x160)" * (cast_expression "(uint *)(puVar35 + -0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002e898;" goto statement_identifier ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (if_statement "if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }" if (parenthesized_expression "((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1)" ( (binary_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1" (cast_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x160) * 5)" ( (binary_expression "*(int *)(puVar35 + -0x160) * 5" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) * number_literal) ))) <= identifier) )) (compound_statement "{\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }" { (labeled_statement "LAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);" statement_identifier : (expression_statement "unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);" (assignment_expression "unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150)" identifier = (binary_expression "param_1 + -*(int *)(puVar35 + -0x150)" identifier + (unary_expression "-*(int *)(puVar35 + -0x150)" - (pointer_expression "*(int *)(puVar35 + -0x150)" * (cast_expression "(int *)(puVar35 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) ))))))) ;)) (if_statement "if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }" if (parenthesized_expression "(unaff_s5 == (byte *)0x0)" ( (binary_expression "unaff_s5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }" { (if_statement "if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;" if (parenthesized_expression "(puVar35[-0x100] == '\0')" ( (binary_expression "puVar35[-0x100] == '\0'" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ed2c;" goto statement_identifier ;)) (if_statement "if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;" if (parenthesized_expression "(puVar35[-0xf4] == '\0')" ( (binary_expression "puVar35[-0xf4] == '\0'" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ed84;" goto statement_identifier ;)) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002ed78;" goto statement_identifier ;) })) (if_statement "if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }" if (parenthesized_expression "(puVar35[-0x100] != '\0')" ( (binary_expression "puVar35[-0x100] != '\0'" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;" if (parenthesized_expression "(puVar35[-0xf4] != '\0')" ( (binary_expression "puVar35[-0xf4] != '\0'" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ea50;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e9e8;" goto statement_identifier ;) })) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xfc);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002ea08;" goto statement_identifier ;) })) (labeled_statement "LAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;" statement_identifier : (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" * (cast_expression "(undefined4 *)(puVar35 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = number_literal) ;)) (do_statement "do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );" do (compound_statement "{\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }" { (labeled_statement "LAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc0)" * (cast_expression "(byte **)(puVar35 + -0xc0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar35 + -0xc4)" * (cast_expression "(int *)(puVar35 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;)) (if_statement "if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;" if (parenthesized_expression "(unaff_s5 != *(byte **)(puVar35 + -0x130))" ( (binary_expression "unaff_s5 != *(byte **)(puVar35 + -0x130)" identifier != (pointer_expression "*(byte **)(puVar35 + -0x130)" * (cast_expression "(byte **)(puVar35 + -0x130)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e6d0;" goto statement_identifier ;)) (expression_statement "pbVar43 = *(byte **)(puVar35 + -0x134);" (assignment_expression "pbVar43 = *(byte **)(puVar35 + -0x134)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x134)" * (cast_expression "(byte **)(puVar35 + -0x134)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = unaff_s5;" (assignment_expression "pbVar24 = unaff_s5" identifier = identifier) ;) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9)" identifier = (call_expression "(**(code **)(iVar15 + -0x79c0))(iVar9)" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" ( (pointer_expression "**(code **)(iVar15 + -0x79c0)" * (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(iVar9)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (iVar11 != 0) goto LAB_0002e6d0;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002e6d0;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" else (compound_statement "{\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" { (labeled_statement "LAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc0)" * (cast_expression "(byte **)(puVar35 + -0xc0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) ))))) ;)) (if_statement "if (puVar35[-300] == '\0') goto LAB_0002e89c;" if (parenthesized_expression "(puVar35[-300] == '\0')" ( (binary_expression "puVar35[-300] == '\0'" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e89c;" goto statement_identifier ;)) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;" if (parenthesized_expression "(*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128))" ( (binary_expression "*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)" (pointer_expression "*(int *)(puVar35 + -0xb8)" * (cast_expression "(int *)(puVar35 + -0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) )))) != (pointer_expression "*(int *)(puVar35 + -0x128)" * (cast_expression "(int *)(puVar35 + -0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e6c8;" goto statement_identifier ;)) }))) (expression_statement "puVar8 = (undefined4 *)(puVar35 + -0xd4);" (assignment_expression "puVar8 = (undefined4 *)(puVar35 + -0xd4)" identifier = (cast_expression "(undefined4 *)(puVar35 + -0xd4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xd4)" ( (binary_expression "puVar35 + -0xd4" identifier + number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)(puVar35 + -0x9c);" (assignment_expression "puVar3 = (undefined4 *)(puVar35 + -0x9c)" identifier = (cast_expression "(undefined4 *)(puVar35 + -0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x9c)" ( (binary_expression "puVar35 + -0x9c" identifier + number_literal) )))) ;) (do_statement "do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);" do (compound_statement "{\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            }" { (expression_statement "puVar18 = puVar3;" (assignment_expression "puVar18 = puVar3" identifier = identifier) ;) (expression_statement "puVar12 = puVar8 + 4;" (assignment_expression "puVar12 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) (expression_statement "uVar41 = puVar8[3];" (assignment_expression "uVar41 = puVar8[3]" identifier = (subscript_expression "puVar8[3]" identifier [ number_literal ])) ;) (expression_statement "uVar25 = puVar8[1];" (assignment_expression "uVar25 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = puVar8[2];" (assignment_expression "uVar16 = puVar8[2]" identifier = (subscript_expression "puVar8[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar18 = *puVar8;" (assignment_expression "*puVar18 = *puVar8" (pointer_expression "*puVar18" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar18[1] = uVar25;" (assignment_expression "puVar18[1] = uVar25" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar18[2] = uVar16;" (assignment_expression "puVar18[2] = uVar16" (subscript_expression "puVar18[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar18[3] = uVar41;" (assignment_expression "puVar18[3] = uVar41" (subscript_expression "puVar18[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22 = *(undefined4 **)(puVar35 + -0x158);" (assignment_expression "puVar22 = *(undefined4 **)(puVar35 + -0x158)" identifier = (pointer_expression "*(undefined4 **)(puVar35 + -0x158)" * (cast_expression "(undefined4 **)(puVar35 + -0x158)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x158)" ( (binary_expression "puVar35 + -0x158" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" identifier = identifier) ;) (expression_statement "puVar3 = puVar18 + 4;" (assignment_expression "puVar3 = puVar18 + 4" identifier = (binary_expression "puVar18 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 != puVar22)" ( (binary_expression "puVar12 != puVar22" identifier != identifier) )) ;) (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (expression_statement "pbVar29 = (byte *)(int)(char)bVar20;" (assignment_expression "pbVar29 = (byte *)(int)(char)bVar20" identifier = (cast_expression "(byte *)(int)(char)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)bVar20" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar20" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;" (assignment_expression "*(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60" (pointer_expression "*(undefined1 **)(puVar35 + -0x164)" * (cast_expression "(undefined1 **)(puVar35 + -0x164)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) = (binary_expression "puVar35 + -0x60" identifier + number_literal)) ;) (expression_statement "pbVar24 = (byte *)*puVar22;" (assignment_expression "pbVar24 = (byte *)*puVar22" identifier = (cast_expression "(byte *)*puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier))) ;) (expression_statement "puVar18[5] = puVar22[1];" (assignment_expression "puVar18[5] = puVar22[1]" (subscript_expression "puVar18[5]" identifier [ number_literal ]) = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[4] = pbVar24;" (assignment_expression "puVar18[4] = pbVar24" (subscript_expression "puVar18[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar35[-0x90] = 0;" (assignment_expression "puVar35[-0x90] = 0" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x60)" * (cast_expression "(undefined4 *)(puVar35 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x60)" ( (binary_expression "puVar35 + -0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);" (assignment_expression "*(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar35 + -0x88)" * (cast_expression "(int *)(puVar35 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x5c) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x5c) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x5c)" * (cast_expression "(undefined4 *)(puVar35 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x5c)" ( (binary_expression "puVar35 + -0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" identifier = identifier) ;) (if_statement "if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" if (parenthesized_expression "((uVar5 >> (bVar20 & 0x1f) & 1) == 0)" ( (binary_expression "(uVar5 >> (bVar20 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar5 >> (bVar20 & 0x1f) & 1)" ( (binary_expression "uVar5 >> (bVar20 & 0x1f) & 1" (binary_expression "uVar5 >> (bVar20 & 0x1f)" identifier >> (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x164);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x164)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x164)" * (cast_expression "(byte **)(puVar35 + -0x164)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(pbVar29)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(pbVar29)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar39;" (assignment_expression "puVar38 = puVar39" identifier = identifier) ;) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7a18);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7a18)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-100] = 1;" (assignment_expression "puVar35[-100] = 1" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar41 = (*pcVar33)();" (assignment_expression "uVar41 = (*pcVar33)()" identifier = (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" identifier (argument_list "(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x50) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x50) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) goto LAB_0002ed18;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0002ed18;" goto statement_identifier ;)) (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" identifier = (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pcVar30)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e51c;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }" { (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar30 != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(*pcVar30 != '\0')" ( (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" else (compound_statement "{\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (byte *)0x1;" (assignment_expression "unaff_s6 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" identifier = (call_expression "(*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                puVar35[-100] = 0;\n              }" { (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" else (compound_statement "{\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" { (expression_statement "*(byte **)(puVar35 + -0x48) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x48) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }" { (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" identifier = (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002e51c;" goto statement_identifier ;) })) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b80)" * (cast_expression "(code **)(iVar15 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b80)" ( (binary_expression "iVar15 + -0x7b80" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);" statement_identifier : (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;)) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar39;" (assignment_expression "puVar38 = puVar39" identifier = identifier) ;) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar35[-0x10c] = 1;" (assignment_expression "puVar35[-0x10c] = 1" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" identifier = identifier) ;) (labeled_statement "LAB_0002eb98:\n            pbVar43 = pbVar29;" statement_identifier : (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" identifier = identifier) ;)) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar43,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar43,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar43,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar43,uVar41)" identifier (argument_list "(pbVar43,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" identifier (argument_list "(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0xf8) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xf8) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xf8)" * (cast_expression "(int *)(puVar35 + -0xf8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }" { (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" else (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" { (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }" { (if_statement "if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }" { (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (*pcVar30 != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(*pcVar30 != '\0')" ( (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" else (compound_statement "{\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (byte *)0x1;" (assignment_expression "unaff_s6 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                  puVar35[-0x10c] = 0;\n                }" { (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ea50;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pcVar30)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) }))) (while_statement "while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }" { (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) (expression_statement "puVar35[-0x100] = 0;" (assignment_expression "puVar35[-0x100] = 0" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));" (assignment_expression "pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8))" identifier = (cast_expression "(byte *)(pcVar30 + *(int *)(puVar35 + -0xf8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar30 + *(int *)(puVar35 + -0xf8))" ( (binary_expression "pcVar30 + *(int *)(puVar35 + -0xf8)" identifier + (pointer_expression "*(int *)(puVar35 + -0xf8)" * (cast_expression "(int *)(puVar35 + -0xf8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar35 + -0xfc) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xfc) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s6 = pbVar29;" (assignment_expression "unaff_s6 = pbVar29" identifier = identifier) ;) (if_statement "if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;" if (parenthesized_expression "(unaff_s5 == (byte *)0x0)" ( (binary_expression "unaff_s5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed30;" goto statement_identifier ;)) (labeled_statement "LAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;" statement_identifier : (if_statement "if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;" if (parenthesized_expression "(puVar35[-0x10c] != '\0')" ( (binary_expression "puVar35[-0x10c] != '\0'" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002eb98;" goto statement_identifier ;))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar29 >> 5)" ( (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar29 & 0x1f)" ( (binary_expression "*pbVar29 & 0x1f" (pointer_expression "*pbVar29" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002eb80;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" identifier = (cast_expression "(byte *)(int)(char)*pbVar29" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar29" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar29" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar29" * identifier))))) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xf0) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xf0) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;" statement_identifier : (if_statement "if (pbVar29 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;))) (labeled_statement "LAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);" statement_identifier : (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;)) })) (expression_statement "pcVar33 = *(code **)(puVar35 + -0x14c);" (assignment_expression "pcVar33 = *(code **)(puVar35 + -0x14c)" identifier = (pointer_expression "*(code **)(puVar35 + -0x14c)" * (cast_expression "(code **)(puVar35 + -0x14c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14c)" ( (binary_expression "puVar35 + -0x14c" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar28 = (byte *)0x0;" (assignment_expression "pbVar28 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar35[-0x100] != '\0') goto LAB_0002ea60;" if (parenthesized_expression "(puVar35[-0x100] != '\0')" ( (binary_expression "puVar35[-0x100] != '\0'" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ea60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);" statement_identifier : (expression_statement "unaff_s6 = *(byte **)(puVar35 + -0xfc);" (assignment_expression "unaff_s6 = *(byte **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" statement_identifier : (if_statement "if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" if (parenthesized_expression "(puVar35[-0x10c] == '\0')" ( (binary_expression "puVar35[-0x10c] == '\0'" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }" { (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*unaff_s6 >> 5) * 4" (call_expression "(uint)(*unaff_s6 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*unaff_s6 >> 5)" ( (binary_expression "*unaff_s6 >> 5" (pointer_expression "*unaff_s6" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*unaff_s6 & 0x1f)" ( (binary_expression "*unaff_s6 & 0x1f" (pointer_expression "*unaff_s6" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }" { (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }" { (expression_statement "puVar35[-0x10c] = 1;" (assignment_expression "puVar35[-0x10c] = 1" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ee14;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*unaff_s6;" (assignment_expression "pbVar29 = (byte *)(int)(char)*unaff_s6" identifier = (cast_expression "(byte *)(int)(char)*unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*unaff_s6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*unaff_s6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*unaff_s6" * identifier))))) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xf0) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xf0) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);" statement_identifier : (expression_statement "pcVar33 = *(code **)(puVar35 + -0x14c);" (assignment_expression "pcVar33 = *(code **)(puVar35 + -0x14c)" identifier = (pointer_expression "*(code **)(puVar35 + -0x14c)" * (cast_expression "(code **)(puVar35 + -0x14c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14c)" ( (binary_expression "puVar35 + -0x14c" identifier + number_literal) ))))) ;)) (expression_statement "pbVar28 = pbVar29;" (assignment_expression "pbVar28 = pbVar29" identifier = identifier) ;) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed84;" goto statement_identifier ;)) (labeled_statement "LAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;" statement_identifier : (expression_statement "pbVar24 = puVar35 + -0x148;" (assignment_expression "pbVar24 = puVar35 + -0x148" identifier = (binary_expression "puVar35 + -0x148" identifier + number_literal)) ;)) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "iVar9 = (*pcVar33)(pbVar10);" (assignment_expression "iVar9 = (*pcVar33)(pbVar10)" identifier = (call_expression "(*pcVar33)(pbVar10)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(pbVar10)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x15c) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x15c) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x15c)" * (cast_expression "(int *)(puVar35 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" identifier = identifier) ;) (if_statement "if (iVar9 != 0) goto LAB_0002ef34;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002ef34;" goto statement_identifier ;)) (expression_statement "uVar5 = (uint)(byte)puVar35[-0xbc];" (assignment_expression "uVar5 = (uint)(byte)puVar35[-0xbc]" identifier = (cast_expression "(uint)(byte)puVar35[-0xbc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar35[-0xbc]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ])))) ;) (expression_statement "*(byte **)(puVar35 + -0x150) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x150) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x150)" * (cast_expression "(byte **)(puVar35 + -0x150)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" else (compound_statement "{\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" { (labeled_statement "LAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(unaff_s6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(unaff_s6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(unaff_s6,uVar41)" identifier (argument_list "(unaff_s6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar43 = unaff_s6;" (assignment_expression "pbVar43 = unaff_s6" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" identifier (argument_list "(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0xf8) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xf8) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xf8)" * (cast_expression "(int *)(puVar35 + -0xf8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }" if (parenthesized_expression "(iVar9 != -1)" ( (binary_expression "iVar9 != -1" identifier != number_literal) )) (compound_statement "{\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }" { (if_statement "if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0xfc))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0xfc)" * (cast_expression "(undefined4 *)(puVar35 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ed84;" goto statement_identifier ;) })) (if_statement "if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;)) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                    puVar35[-0x10c] = 0;\n                  }" { (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ed78;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }" if (parenthesized_expression "(**(char **)(puVar35 + -0xfc) == '\0')" ( (binary_expression "**(char **)(puVar35 + -0xfc) == '\0'" (pointer_expression "**(char **)(puVar35 + -0xfc)" * (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }" { (if_statement "if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ee78;" goto statement_identifier ;)) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;) })) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];" statement_identifier : (expression_statement "uVar5 = (uint)(byte)puVar35[-0xbc];" (assignment_expression "uVar5 = (uint)(byte)puVar35[-0xbc]" identifier = (cast_expression "(uint)(byte)puVar35[-0xbc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar35[-0xbc]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ])))) ;)) (expression_statement "*(byte **)(puVar35 + -0x150) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x150) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x150)" * (cast_expression "(byte **)(puVar35 + -0x150)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" * (cast_expression "(undefined4 *)(puVar35 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = number_literal) ;) })))) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) }))) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(param_1)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(param_1)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }" { (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7a18);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7a18)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0x144] = 1;" (assignment_expression "puVar35[-0x144] = 1" (subscript_expression "puVar35[-0x144]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar41 = (*pcVar33)();" (assignment_expression "uVar41 = (*pcVar33)()" identifier = (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1)" identifier (argument_list "(puVar35 + -0x128,pbVar6,pbVar24,param_1)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x130) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x130) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x130)" * (cast_expression "(int *)(puVar35 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" { (expression_statement "puVar35[-300] = 0;" (assignment_expression "puVar35[-300] = 0" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e360;" goto statement_identifier ;) })) (if_statement "if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x134))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x134)" * (cast_expression "(undefined4 *)(puVar35 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-300] = 0;" (assignment_expression "puVar35[-300] = 0" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e360;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }" { (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x128);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x128)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x128)" * (cast_expression "(byte **)(puVar35 + -0x128)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0x134) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0x134) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x134)" * (pointer_expression "*(char **)(puVar35 + -0x134)" * (cast_expression "(char **)(puVar35 + -0x134)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar34 + -0x128;" (assignment_expression "puVar39 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" else (compound_statement "{\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x128);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x128)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x128)" * (cast_expression "(byte **)(puVar35 + -0x128)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) }))) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-300] = 1;" (assignment_expression "puVar35[-300] = 1" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(param_1);" (assignment_expression "iVar9 = (*pcVar33)(param_1)" identifier = (call_expression "(*pcVar33)(param_1)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar35[-0x144] = 0;\n      }" { (expression_statement "puVar35[-0x144] = 0;" (assignment_expression "puVar35[-0x144] = 0" (subscript_expression "puVar35[-0x144]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e2a0;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);" statement_identifier : (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;)) (expression_statement "puVar39 = puVar38;" (assignment_expression "puVar39 = puVar38" identifier = identifier) ;) (labeled_statement "LAB_0002ef60:\n    pbVar24 = &DAT_000000b2;" statement_identifier : (expression_statement "pbVar24 = &DAT_000000b2;" (assignment_expression "pbVar24 = &DAT_000000b2" identifier = (pointer_expression "&DAT_000000b2" & identifier)) ;)) (expression_statement "pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);" (assignment_expression "pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0xe8)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xe8" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(iVar15 + -0x7bb0))();" (call_expression "(**(code **)(iVar15 + -0x7bb0))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79d8)" * (cast_expression "(code **)(iVar15 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79d8)" ( (binary_expression "iVar15 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = mbsnwidth;" (assignment_expression "pcVar42 = mbsnwidth" identifier = identifier) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x46c58)" identifier = (pointer_expression "*(undefined4 **)(pcVar33 + 0x46c58)" * (cast_expression "(undefined4 **)(pcVar33 + 0x46c58)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x46c58)" ( (binary_expression "pcVar33 + 0x46c58" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x46bd8);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x46bd8)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x46bd8)" * (cast_expression "(code **)(pcVar33 + 0x46bd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x46bd8)" ( (binary_expression "pcVar33 + 0x46bd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar35 + -0x1bc) = puVar8;" (assignment_expression "*(undefined4 **)(puVar35 + -0x1bc) = puVar8" (pointer_expression "*(undefined4 **)(puVar35 + -0x1bc)" * (cast_expression "(undefined4 **)(puVar35 + -0x1bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;" (assignment_expression "*(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0" (pointer_expression "*(code **)(puVar35 + -0x1c8)" * (cast_expression "(code **)(puVar35 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4e5f0" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar35 + -400) = unaff_s6;" (assignment_expression "*(byte **)(puVar35 + -400) = unaff_s6" (pointer_expression "*(byte **)(puVar35 + -400)" * (cast_expression "(byte **)(puVar35 + -400)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -400)" ( (binary_expression "puVar35 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1a4) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x1a4) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x1a4)" * (cast_expression "(byte **)(puVar35 + -0x1a4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1a4)" ( (binary_expression "puVar35 + -0x1a4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar31 = pbVar28 + (int)pbVar43;" (assignment_expression "pbVar31 = pbVar28 + (int)pbVar43" identifier = (binary_expression "pbVar28 + (int)pbVar43" identifier + (cast_expression "(int)pbVar43" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(code **)(puVar35 + -0x184) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -0x184) = pcVar42" (pointer_expression "*(code **)(puVar35 + -0x184)" * (cast_expression "(code **)(puVar35 + -0x184)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x184)" ( (binary_expression "puVar35 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x188) = puVar39;" (assignment_expression "*(undefined1 **)(puVar35 + -0x188) = puVar39" (pointer_expression "*(undefined1 **)(puVar35 + -0x188)" * (cast_expression "(undefined1 **)(puVar35 + -0x188)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x188)" ( (binary_expression "puVar35 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x18c) = pbVar23;" (assignment_expression "*(byte **)(puVar35 + -0x18c) = pbVar23" (pointer_expression "*(byte **)(puVar35 + -0x18c)" * (cast_expression "(byte **)(puVar35 + -0x18c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x18c)" ( (binary_expression "puVar35 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x194) = unaff_s5;" (assignment_expression "*(byte **)(puVar35 + -0x194) = unaff_s5" (pointer_expression "*(byte **)(puVar35 + -0x194)" * (cast_expression "(byte **)(puVar35 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x194)" ( (binary_expression "puVar35 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x198) = unaff_s4;" (assignment_expression "*(byte **)(puVar35 + -0x198) = unaff_s4" (pointer_expression "*(byte **)(puVar35 + -0x198)" * (cast_expression "(byte **)(puVar35 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x198)" ( (binary_expression "puVar35 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x19c) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x19c) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x19c)" * (cast_expression "(byte **)(puVar35 + -0x19c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x19c)" ( (binary_expression "puVar35 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1a0) = pbVar10;" (assignment_expression "*(byte **)(puVar35 + -0x1a0) = pbVar10" (pointer_expression "*(byte **)(puVar35 + -0x1a0)" * (cast_expression "(byte **)(puVar35 + -0x1a0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1a0)" ( (binary_expression "puVar35 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1a8) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x1a8) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x1a8)" * (cast_expression "(byte **)(puVar35 + -0x1a8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1a8)" ( (binary_expression "puVar35 + -0x1a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x178) = pbVar24;" (assignment_expression "*(byte **)(puVar35 + -0x178) = pbVar24" (pointer_expression "*(byte **)(puVar35 + -0x178)" * (cast_expression "(byte **)(puVar35 + -0x178)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x1ac) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1ac) = *puVar8" (pointer_expression "*(undefined4 *)(puVar35 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar35 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1ac)" ( (binary_expression "puVar35 + -0x1ac" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "uVar5 = (*pcVar40)();" (assignment_expression "uVar5 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" if (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 2" identifier < number_literal) )) (compound_statement "{\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }" { (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }" if (parenthesized_expression "(pbVar28 < pbVar31)" ( (binary_expression "pbVar28 < pbVar31" identifier < identifier) )) (compound_statement "{\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }" { (expression_statement "piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();" (assignment_expression "piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))()" identifier = (cast_expression "(int *)(**(code **)(iVar15 + -0x7bb4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar15 + -0x7bb4))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb4))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb4)" * (pointer_expression "*(code **)(iVar15 + -0x7bb4)" * (cast_expression "(code **)(iVar15 + -0x7bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb4)" ( (binary_expression "iVar15 + -0x7bb4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pbVar43 = (byte *)0x7fffffff;" (assignment_expression "pbVar43 = (byte *)0x7fffffff" identifier = (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (do_statement "do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);" do (compound_statement "{\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      }" { (expression_statement "pbVar24 = pbVar28 + 1;" (assignment_expression "pbVar24 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);" (assignment_expression "uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" identifier = (pointer_expression "*(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" * (cast_expression "(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (uint)*pbVar28 * 2)" ( (binary_expression "*piVar13 + (uint)*pbVar28 * 2" (pointer_expression "*piVar13" * identifier) + (binary_expression "(uint)*pbVar28 * 2" (binary_expression "(uint)*pbVar28" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) ))))) ;) (if_statement "if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" if (parenthesized_expression "((uVar1 & 0x40) == 0)" ( (binary_expression "(uVar1 & 0x40) == 0" (parenthesized_expression "(uVar1 & 0x40)" ( (binary_expression "uVar1 & 0x40" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }" { (if_statement "if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;" if (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 2) != 0)" ( (binary_expression "(*(uint *)(puVar35 + -0x178) & 2) != 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 2)" ( (binary_expression "*(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;)) (if_statement "if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;" if (parenthesized_expression "((uVar1 & 0x200) == 0)" ( (binary_expression "(uVar1 & 0x200) == 0" (parenthesized_expression "(uVar1 & 0x200)" ( (binary_expression "uVar1 & 0x200" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002f1dc;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" else (compound_statement "{\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" { (labeled_statement "LAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);" statement_identifier : (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar35 + -0x1bc)" * (cast_expression "(int **)(puVar35 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;" if (parenthesized_expression "(pbVar6 == (byte *)0x7fffffff)" ( (binary_expression "pbVar6 == (byte *)0x7fffffff" identifier == (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002f064;" goto statement_identifier ;)) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) }))) (expression_statement "pbVar28 = pbVar24;" (assignment_expression "pbVar28 = pbVar24" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar31 != pbVar24)" ( (binary_expression "pbVar31 != pbVar24" identifier != identifier) )) ;) (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar35 + -0x1bc)" * (cast_expression "(int **)(puVar35 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002f064;" goto statement_identifier ;) })) }) (else_clause "else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" else (compound_statement "{\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" { (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }" if (parenthesized_expression "(pbVar28 < pbVar31)" ( (binary_expression "pbVar28 < pbVar31" identifier < identifier) )) (compound_statement "{\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }" { (expression_statement "*(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;" (assignment_expression "*(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x1c0)" * (cast_expression "(uint *)(puVar35 + -0x1c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c0)" ( (binary_expression "puVar35 + -0x1c0" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal)) ;) (do_statement "do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);" do (compound_statement "{\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      }" { (expression_statement "iVar9 = (int)(char)*pbVar28;" (assignment_expression "iVar9 = (int)(char)*pbVar28" identifier = (cast_expression "(int)(char)*pbVar28" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar28" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar28" * identifier)))) ;) (if_statement "if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" if (parenthesized_expression "(iVar9 < 0x40)" ( (binary_expression "iVar9 < 0x40" identifier < number_literal) )) (compound_statement "{\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }" { (if_statement "if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;" if (parenthesized_expression "((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4))" ( (binary_expression "(0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)" (parenthesized_expression "(0x24 < iVar9)" ( (binary_expression "0x24 < iVar9" number_literal < identifier) )) || (parenthesized_expression "((iVar9 - 0x20U & 0xff) < 4)" ( (binary_expression "(iVar9 - 0x20U & 0xff) < 4" (parenthesized_expression "(iVar9 - 0x20U & 0xff)" ( (binary_expression "iVar9 - 0x20U & 0xff" (binary_expression "iVar9 - 0x20U" identifier - number_literal) & number_literal) )) < number_literal) ))) )) (goto_statement "goto LAB_0002f050;" goto statement_identifier ;)) (labeled_statement "LAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar35 + -0x1b4) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1b4) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x1b4)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b4)" ( (binary_expression "puVar35 + -0x1b4" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(puVar35 + -0x1b0) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1b0) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x1b0)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b0)" ( (binary_expression "puVar35 + -0x1b0" identifier + number_literal) )))) = number_literal) ;) (do_statement "do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);" do (compound_statement "{\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          }" { (expression_statement "pbVar43 = pbVar28;" (assignment_expression "pbVar43 = pbVar28" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" identifier (argument_list "(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" ( (binary_expression "puVar35 + -0x1b8" identifier + number_literal) , identifier , (binary_expression "(int)pbVar31 - (int)pbVar28" (cast_expression "(int)pbVar31" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "puVar35 + -0x1b4" identifier + number_literal) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }" { (if_statement "if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;" if (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 1) == 0)" ( (binary_expression "(*(uint *)(puVar35 + -0x178) & 1) == 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 1)" ( (binary_expression "*(uint *)(puVar35 + -0x178) & 1" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002f050;" goto statement_identifier ;)) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;) })) (if_statement "if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }" { (if_statement "if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;" if (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 1) != 0)" ( (binary_expression "(*(uint *)(puVar35 + -0x178) & 1) != 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 1)" ( (binary_expression "*(uint *)(puVar35 + -0x178) & 1" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;)) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "pbVar28 = pbVar31;" (assignment_expression "pbVar28 = pbVar31" identifier = identifier) ;) (break_statement "break;" break ;) })) (if_statement "if (iVar9 == 0) {\n              iVar9 = 1;\n            }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar9 = 1;\n            }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) })) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8))" identifier = (call_expression "(**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8))" (parenthesized_expression "(**(code **)(iVar15 + -0x797c))" ( (pointer_expression "**(code **)(iVar15 + -0x797c)" * (pointer_expression "*(code **)(iVar15 + -0x797c)" * (cast_expression "(code **)(iVar15 + -0x797c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x797c)" ( (binary_expression "iVar15 + -0x797c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x1b8))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x1b8)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b8)" ( (binary_expression "puVar35 + -0x1b8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" if (parenthesized_expression "(iVar11 < 0)" ( (binary_expression "iVar11 < 0" identifier < number_literal) )) (compound_statement "{\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }" { (if_statement "if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;" if (parenthesized_expression "(*(int *)(puVar35 + -0x1c0) != 0)" ( (binary_expression "*(int *)(puVar35 + -0x1c0) != 0" (pointer_expression "*(int *)(puVar35 + -0x1c0)" * (cast_expression "(int *)(puVar35 + -0x1c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c0)" ( (binary_expression "puVar35 + -0x1c0" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;)) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8))" identifier = (call_expression "(**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8))" (parenthesized_expression "(**(code **)(iVar15 + -0x79ec))" ( (pointer_expression "**(code **)(iVar15 + -0x79ec)" * (pointer_expression "*(code **)(iVar15 + -0x79ec)" * (cast_expression "(code **)(iVar15 + -0x79ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79ec)" ( (binary_expression "iVar15 + -0x79ec" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x1b8))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x1b8)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b8)" ( (binary_expression "puVar35 + -0x1b8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }" { (if_statement "if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;" if (parenthesized_expression "(pbVar6 == (byte *)0x7fffffff)" ( (binary_expression "pbVar6 == (byte *)0x7fffffff" identifier == (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002f234;" goto statement_identifier ;)) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" else (compound_statement "{\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" { (if_statement "if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }" if (parenthesized_expression "(0x7fffffff - (int)pbVar6 < iVar11)" ( (binary_expression "0x7fffffff - (int)pbVar6 < iVar11" (binary_expression "0x7fffffff - (int)pbVar6" number_literal - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }" { (labeled_statement "LAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;" statement_identifier : (expression_statement "pbVar6 = (byte *)0x7fffffff;" (assignment_expression "pbVar6 = (byte *)0x7fffffff" identifier = (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_0002f060;" goto statement_identifier ;) })) (expression_statement "pbVar6 = pbVar6 + iVar11;" (assignment_expression "pbVar6 = pbVar6 + iVar11" identifier = (binary_expression "pbVar6 + iVar11" identifier + identifier)) ;) }))) (expression_statement "pbVar28 = pbVar28 + iVar9;" (assignment_expression "pbVar28 = pbVar28 + iVar9" identifier = (binary_expression "pbVar28 + iVar9" identifier + identifier)) ;) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(puVar35 + -0x1b4)" ( (binary_expression "puVar35 + -0x1b4" identifier + number_literal) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) ;) }) (else_clause "else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" else (compound_statement "{\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" { (if_statement "if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;" if (parenthesized_expression "((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))" ( (binary_expression "(iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" (parenthesized_expression "(iVar9 < 0x41)" ( (binary_expression "iVar9 < 0x41" identifier < number_literal) )) || (parenthesized_expression "((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" ( (parenthesized_expression "(0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))" ( (binary_expression "0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))" (binary_expression "0x5f < iVar9" number_literal < identifier) && (parenthesized_expression "(0x1d < (iVar9 - 0x61U & 0xff))" ( (binary_expression "0x1d < (iVar9 - 0x61U & 0xff)" number_literal < (parenthesized_expression "(iVar9 - 0x61U & 0xff)" ( (binary_expression "iVar9 - 0x61U & 0xff" (binary_expression "iVar9 - 0x61U" identifier - number_literal) & number_literal) ))) ))) )) ))) )) (goto_statement "goto LAB_0002f0c8;" goto statement_identifier ;)) (labeled_statement "LAB_0002f050:\n          pbVar6 = pbVar6 + 1;" statement_identifier : (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar28 = pbVar28 + 1;" (assignment_expression "pbVar28 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "(pbVar28 < pbVar31)" ( (binary_expression "pbVar28 < pbVar31" identifier < identifier) )) ;) })) }))) (labeled_statement "LAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);" statement_identifier : (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar35 + -0x1bc)" * (cast_expression "(int **)(puVar35 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0x1ac);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0x1ac)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1ac)" * (cast_expression "(int *)(puVar35 + -0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1ac)" ( (binary_expression "puVar35 + -0x1ac" identifier + number_literal) ))))) ;)) (if_statement "if (iVar9 == *piVar19) {\n    return pbVar6;\n  }" if (parenthesized_expression "(iVar9 == *piVar19)" ( (binary_expression "iVar9 == *piVar19" identifier == (pointer_expression "*piVar19" * identifier)) )) (compound_statement "{\n    return pbVar6;\n  }" { (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79d8)" * (cast_expression "(code **)(iVar15 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79d8)" ( (binary_expression "iVar15 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = gnu_mbswidth;" (assignment_expression "pcVar42 = gnu_mbswidth" identifier = identifier) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x468a8);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x468a8)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x468a8)" * (cast_expression "(code **)(pcVar33 + 0x468a8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x468a8)" ( (binary_expression "pcVar33 + 0x468a8" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar35 + -0x1e0) = pbVar31;" (assignment_expression "*(byte **)(puVar35 + -0x1e0) = pbVar31" (pointer_expression "*(byte **)(puVar35 + -0x1e0)" * (cast_expression "(byte **)(puVar35 + -0x1e0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1e0)" ( (binary_expression "puVar35 + -0x1e0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1e4) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x1e4) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x1e4)" * (cast_expression "(byte **)(puVar35 + -0x1e4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1e4)" ( (binary_expression "puVar35 + -0x1e4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x1dc) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -0x1dc) = pcVar42" (pointer_expression "*(code **)(puVar35 + -0x1dc)" * (cast_expression "(code **)(puVar35 + -0x1dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1dc)" ( (binary_expression "puVar35 + -0x1dc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;" (assignment_expression "*(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334" (pointer_expression "*(code **)(puVar35 + -0x1f0)" * (cast_expression "(code **)(puVar35 + -0x1f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1f0)" ( (binary_expression "puVar35 + -0x1f0" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4e334" identifier + number_literal)) ;) (expression_statement "uVar41 = (*pcVar40)();" (assignment_expression "uVar41 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);" (assignment_expression "pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43)" identifier = (cast_expression "(byte *)mbsnwidth(iVar9,uVar41,pbVar43)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "mbsnwidth(iVar9,uVar41,pbVar43)" identifier (argument_list "(iVar9,uVar41,pbVar43)" ( identifier , identifier , identifier ))))) ;) (return_statement "return pbVar28;" return identifier ;) })))
(translation_unit "_Bool knuth_morris_pratt(uchar *haystack,uchar *needle,size_t needle_len,uchar **resultp)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  bool bVar3;\n  undefined4 *puVar4;\n  mbstate_t *pmVar5;\n  undefined3 extraout_var;\n  uint uVar6;\n  size_t sVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  char cVar14;\n  int iVar10;\n  _Bool _Var15;\n  mbstate_t *pmVar11;\n  undefined4 *puVar12;\n  undefined1 uVar16;\n  int *piVar13;\n  int iVar17;\n  uchar uVar23;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  uchar *puVar20;\n  undefined4 *puVar21;\n  int *piVar22;\n  byte *s;\n  mbstate_t *pmVar24;\n  undefined4 *puVar25;\n  char *string;\n  mbstate_t *pwc;\n  mbstate_t *needle_00;\n  mbstate_t *pmVar26;\n  mbstate_t *pmVar27;\n  undefined4 uVar28;\n  mbstate_t *pmVar29;\n  mbstate_t *pmVar30;\n  size_t *psVar31;\n  mbstate_t *pmVar32;\n  byte *pbVar33;\n  int unaff_s2;\n  mbstate_t *unaff_s3;\n  mbstate_t *unaff_s4;\n  mbstate_t *unaff_s5;\n  mbstate_t *unaff_s6;\n  byte *pbVar34;\n  undefined4 unaff_s7;\n  undefined *puVar35;\n  code *pcVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  mbstate_t *ps;\n  code *pcVar40;\n  code *pcVar41;\n  mbstate_t *pmVar42;\n  undefined1 auStack_38 [16];\n  undefined4 uStack_1c;\n  int iStack_14;\n  \n  pmVar32 = (mbstate_t *)PTR___stack_chk_guard_00075be8;\n  puVar37 = auStack_38;\n  uVar6 = needle_len * 4;\n  iStack_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar6 < 0) || (needle_len >> 0x1e != 0)) {\nLAB_0002d620:\n    _Var15 = false;\n  }\n  else {\n    if (uVar6 < 0xfb1) {\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }\n    puVar37 = puVar39;\n    *(undefined4 *)(uVar6 + 4) = 1;\n    if (2 < needle_len) {\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }\n    *resultp = (uchar *)0x0;\n    sVar7 = 0;\n    uVar23 = *haystack;\n    puVar20 = haystack;\nLAB_0002d580:\n    if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    _Var15 = true;\n  }\nLAB_0002d5c8:\n  if (iStack_14 == pmVar32->__count) {\n    return _Var15;\n  }\n  pcVar40 = mbuiter_multi_next;\n  puVar35 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pmVar27 = (mbstate_t *)&DAT_000000b3;\n  iVar17 = *(int *)(puVar35 + 0x47f48);\n  pcVar36 = *(code **)(puVar35 + 0x48360);\n  pwc = (mbstate_t *)(*(int *)(puVar35 + 0x47f48) + -0x120);\n  *(undefined **)(puVar37 + -0x10) = puVar35 + 0x4ff10;\n  *(code **)(puVar37 + -4) = pcVar40;\n  pcVar41 = knuth_morris_pratt_multibyte;\n  iVar17 = iVar17 + -0x114;\n  (*pcVar36)();\n  puVar38 = puVar37 + -0x128;\n  ps = (mbstate_t *)(puVar37 + -0x128);\n  puVar8 = *(undefined4 **)(pcVar36 + 0x4853c);\n  pcVar40 = *(code **)(pcVar36 + 0x48238);\n  *(undefined1 **)(puVar37 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar37 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar37 + -0x10c) = puVar8;\n  *(code **)(puVar37 + -0x118) = pcVar36 + 0x4fed4;\n  *(int *)(puVar37 + -0x108) = iVar17;\n  *(code **)(puVar37 + -0x24) = pcVar41;\n  *(mbstate_t **)(puVar37 + -0x30) = unaff_s6;\n  *(mbstate_t **)(puVar37 + -0x34) = unaff_s5;\n  *(mbstate_t **)(puVar37 + -0x38) = unaff_s4;\n  *(mbstate_t **)(puVar37 + -0x3c) = unaff_s3;\n  *(int *)(puVar37 + -0x40) = unaff_s2;\n  *(mbstate_t **)(puVar37 + -0x44) = pmVar32;\n  *(uchar **)(puVar37 + -0x48) = haystack;\n  *(mbstate_t **)(puVar37 + -0x110) = pmVar27;\n  *(undefined4 *)(puVar37 + -0x4c) = *puVar8;\n  needle_00 = pwc;\n  uVar6 = (*pcVar40)(pwc);\n  iVar17 = *(int *)(puVar37 + -0x118);\n  pmVar42 = (mbstate_t *)((ulonglong)uVar6 * 0x2c >> 0x20);\n  *(uint *)(puVar37 + -0x104) = uVar6;\n  puVar39 = puVar37 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar6 * 0x2c)) &&\n     (pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0)) {\n    if ((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1) {\n      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar38 = puVar37 + iVar10 + -0x128;\n      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);\n    }\n    else {\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }\n    pmVar27 = pmVar42;\n    puVar39 = puVar38;\n    if ((mbstate_t *)haystack != (mbstate_t *)0x0) {\n      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);\n      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n      *(undefined4 *)(puVar37 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar37 + -0xec) = 0;\n      *(undefined4 *)(puVar37 + -0x100) = uVar18;\n      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);\n      *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      puVar37[-0xf4] = 0;\n      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);\n      puVar37[-0xe8] = 0;\n      *(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);\n      unaff_s4 = (mbstate_t *)haystack;\n      do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );\n    }\n  }\n  _Var15 = false;\nLAB_0002db5c:\n  pmVar42 = *(mbstate_t **)(puVar37 + -0x4c);\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  puVar38 = puVar39;\n  if (pmVar42 == (mbstate_t *)**(undefined4 **)(puVar37 + -0x10c)) {\n    return _Var15;\n  }\n  goto LAB_0002e0e0;\nFUN_0002d8f0:\n  pmVar32 = (mbstate_t *)(uint)*(byte *)&pmVar27[6].__count;\n  do {\n    pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8);\n    if ((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')) {\n      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;\n      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4);\n  } while( true );\n  *(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4) = pwc;\nLAB_0002d978:\n  pwc = (mbstate_t *)((int)&pwc->__count + 1);\n  pmVar27 = pmVar27 + 5;\n  if (*(mbstate_t **)(puVar37 + -0x104) == pwc) goto LAB_0002d988;\n  goto FUN_0002d8f0;\nLAB_0002d988:\n  uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n  unaff_s4 = (mbstate_t *)(puVar37 + -0xb8);\n  uVar19 = *(undefined4 *)(puVar37 + -0x108);\n  unaff_s6 = (mbstate_t *)(puVar37 + -0x80);\n  unaff_s2 = 0;\n  *(undefined4 *)(puVar37 + -0xb8) = 0;\n  *(undefined4 *)(puVar37 + -0x100) = uVar18;\n  unaff_s3 = (mbstate_t *)(puVar37 + -0x68);\n  unaff_s5 = (mbstate_t *)(puVar37 + -0xa0);\n  *(undefined4 *)(puVar37 + -0xb4) = 0;\n  *(undefined4 *)(puVar37 + -0x80) = 0;\n  *(undefined4 *)(puVar37 + -0xac) = uVar19;\n  **(undefined4 **)(puVar37 + -0x110) = 0;\n  cVar14 = '\0';\n  *(undefined4 *)(puVar37 + -0x7c) = 0;\n  puVar37[-0xbc] = 0;\n  puVar37[-0xb0] = 0;\n  *(undefined4 *)(puVar37 + -0x74) = uVar19;\n  puVar37[-0x84] = 0;\n  puVar37[-0x78] = 0;\n  pmVar27 = pmVar42;\njoined_r0x0002d9dc:\n  do {\n    if (cVar14 == '\0') {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }\n    uVar6 = *(uint *)(puVar37 + -0x68);\n    if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;\n    iVar10 = unaff_s2 * 4;\n    pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\nLAB_0002da00:\n    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n    pmVar27 = pmVar32;\n    if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }\n    pwc = *(mbstate_t **)(iVar9 + iVar10);\n    *(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;\n    if (pwc == (mbstate_t *)0x0) {\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }\n    if (puVar37[-0xb0] == '\0') {\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }\n    pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n    if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;\n    while( true ) {\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }\n    cVar14 = puVar37[-0x78];\n    unaff_s2 = *(int *)(puVar37 + -0x108);\n  } while( true );\n  pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n  pwc = *(mbstate_t **)(puVar37 + -0x74);\nLAB_0002db1c:\n  pwc = (mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count);\n  unaff_s2 = unaff_s2 + 1;\n  puVar37[-0x78] = 0;\n  *(mbstate_t **)(puVar37 + -0x74) = pwc;\n  if (*(int *)(puVar37 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar17 + -0x7ca0))(haystack);\n    _Var15 = true;\n    iVar17 = *(int *)(puVar37 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002ef34:\n  pmVar11 = *(mbstate_t **)(puVar38 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002ddd4:\n  (*pcVar36)();\nLAB_0002dddc:\n  iVar10 = (*pcVar36)(unaff_s4);\n  iVar17 = *(int *)(puVar37 + -0x118);\n  if (iVar10 != 0) {\n    puVar37[-0xbc] = 1;\nLAB_0002ddf4:\n    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n    rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n  }\nLAB_0002e0bc:\n  pmVar27 = (mbstate_t *)0x96;\n  pcVar36 = *(code **)(iVar17 + -0x7bb0);\n  needle_00 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n  pmVar42 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x100);\n  (*pcVar36)();\nLAB_0002e0e0:\n  pcVar41 = mbsstr;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x47b00);\n  pcVar40 = *(code **)(pcVar36 + 0x47a80);\n  *(undefined4 **)(puVar38 + -0x154) = puVar8;\n  *(code **)(puVar38 + -0x170) = pcVar36 + 0x4f498;\n  *(mbstate_t **)(puVar38 + -0x1c) = unaff_s3;\n  *(int *)(puVar38 + -0x20) = unaff_s2;\n  *(code **)(puVar38 + -4) = pcVar41;\n  *(undefined1 **)(puVar38 + -8) = puVar37 + -0x128;\n  *(mbstate_t **)(puVar38 + -0xc) = pwc;\n  *(mbstate_t **)(puVar38 + -0x10) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x14) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x18) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x24) = pmVar32;\n  *(uchar **)(puVar38 + -0x28) = haystack;\n  *(undefined4 *)(puVar38 + -0x2c) = *puVar8;\n  pmVar26 = needle_00;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x170);\n  pmVar11 = pmVar42;\n  if (uVar6 < 2) {\n    unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count;\n    ps = (mbstate_t *)(puVar37 + -0x128);\n    if (unaff_s6 != (mbstate_t *)0x0) {\n      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }\nLAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;\n    }\nLAB_0002e2ac:\n    s = *(byte **)(puVar38 + -0x2c);\n    if (s == (byte *)**(undefined4 **)(puVar38 + -0x154)) {\n      return SUB41(pmVar11,0);\n    }\n  }\n  else {\n    bVar1 = *(byte *)&needle_00->__count;\n    haystack = puVar38 + -0x140;\n    iVar10 = *(int *)(iVar17 + -0x7c98);\n    *(undefined4 *)(puVar38 + -0x140) = 0;\n    pmVar26 = (mbstate_t *)(uint)bVar1;\n    *(undefined4 *)(puVar38 + -0x13c) = 0;\n    *(int *)(puVar38 + -0x168) = iVar10;\n    *(mbstate_t **)(puVar38 + -0x134) = needle_00;\n    puVar38[-0x144] = 0;\n    uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);\n    puVar38[-0x138] = 0;\n    if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  pcVar41 = mbsnwidth;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);\n  pcVar40 = *(code **)(pcVar36 + 0x46bd8);\n  *(undefined4 **)(puVar38 + -0x1bc) = puVar8;\n  *(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;\n  *(mbstate_t **)(puVar38 + -400) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;\n  pbVar33 = s + (int)pmVar26;\n  *(code **)(puVar38 + -0x184) = pcVar41;\n  *(mbstate_t **)(puVar38 + -0x188) = ps;\n  *(mbstate_t **)(puVar38 + -0x18c) = pwc;\n  *(mbstate_t **)(puVar38 + -0x194) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x198) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x19c) = needle_00;\n  *(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;\n  *(uchar **)(puVar38 + -0x1a8) = haystack;\n  *(mbstate_t **)(puVar38 + -0x178) = pmVar27;\n  *(undefined4 *)(puVar38 + -0x1ac) = *puVar8;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x1c8);\n  if (uVar6 < 2) {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }\nLAB_0002f060:\n  piVar22 = *(int **)(puVar38 + -0x1bc);\nLAB_0002f064:\n  string = *(char **)(puVar38 + -0x1ac);\n  if (string != (char *)*piVar22) {\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }\n  return SUB41(iVar10,0);\n}\n\n" (function_definition "_Bool knuth_morris_pratt(uchar *haystack,uchar *needle,size_t needle_len,uchar **resultp)\n\n{\n  byte bVar1;\n  ushort uVar2;\n  bool bVar3;\n  undefined4 *puVar4;\n  mbstate_t *pmVar5;\n  undefined3 extraout_var;\n  uint uVar6;\n  size_t sVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  char cVar14;\n  int iVar10;\n  _Bool _Var15;\n  mbstate_t *pmVar11;\n  undefined4 *puVar12;\n  undefined1 uVar16;\n  int *piVar13;\n  int iVar17;\n  uchar uVar23;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  uchar *puVar20;\n  undefined4 *puVar21;\n  int *piVar22;\n  byte *s;\n  mbstate_t *pmVar24;\n  undefined4 *puVar25;\n  char *string;\n  mbstate_t *pwc;\n  mbstate_t *needle_00;\n  mbstate_t *pmVar26;\n  mbstate_t *pmVar27;\n  undefined4 uVar28;\n  mbstate_t *pmVar29;\n  mbstate_t *pmVar30;\n  size_t *psVar31;\n  mbstate_t *pmVar32;\n  byte *pbVar33;\n  int unaff_s2;\n  mbstate_t *unaff_s3;\n  mbstate_t *unaff_s4;\n  mbstate_t *unaff_s5;\n  mbstate_t *unaff_s6;\n  byte *pbVar34;\n  undefined4 unaff_s7;\n  undefined *puVar35;\n  code *pcVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  mbstate_t *ps;\n  code *pcVar40;\n  code *pcVar41;\n  mbstate_t *pmVar42;\n  undefined1 auStack_38 [16];\n  undefined4 uStack_1c;\n  int iStack_14;\n  \n  pmVar32 = (mbstate_t *)PTR___stack_chk_guard_00075be8;\n  puVar37 = auStack_38;\n  uVar6 = needle_len * 4;\n  iStack_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar6 < 0) || (needle_len >> 0x1e != 0)) {\nLAB_0002d620:\n    _Var15 = false;\n  }\n  else {\n    if (uVar6 < 0xfb1) {\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }\n    puVar37 = puVar39;\n    *(undefined4 *)(uVar6 + 4) = 1;\n    if (2 < needle_len) {\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }\n    *resultp = (uchar *)0x0;\n    sVar7 = 0;\n    uVar23 = *haystack;\n    puVar20 = haystack;\nLAB_0002d580:\n    if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    _Var15 = true;\n  }\nLAB_0002d5c8:\n  if (iStack_14 == pmVar32->__count) {\n    return _Var15;\n  }\n  pcVar40 = mbuiter_multi_next;\n  puVar35 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pmVar27 = (mbstate_t *)&DAT_000000b3;\n  iVar17 = *(int *)(puVar35 + 0x47f48);\n  pcVar36 = *(code **)(puVar35 + 0x48360);\n  pwc = (mbstate_t *)(*(int *)(puVar35 + 0x47f48) + -0x120);\n  *(undefined **)(puVar37 + -0x10) = puVar35 + 0x4ff10;\n  *(code **)(puVar37 + -4) = pcVar40;\n  pcVar41 = knuth_morris_pratt_multibyte;\n  iVar17 = iVar17 + -0x114;\n  (*pcVar36)();\n  puVar38 = puVar37 + -0x128;\n  ps = (mbstate_t *)(puVar37 + -0x128);\n  puVar8 = *(undefined4 **)(pcVar36 + 0x4853c);\n  pcVar40 = *(code **)(pcVar36 + 0x48238);\n  *(undefined1 **)(puVar37 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar37 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar37 + -0x10c) = puVar8;\n  *(code **)(puVar37 + -0x118) = pcVar36 + 0x4fed4;\n  *(int *)(puVar37 + -0x108) = iVar17;\n  *(code **)(puVar37 + -0x24) = pcVar41;\n  *(mbstate_t **)(puVar37 + -0x30) = unaff_s6;\n  *(mbstate_t **)(puVar37 + -0x34) = unaff_s5;\n  *(mbstate_t **)(puVar37 + -0x38) = unaff_s4;\n  *(mbstate_t **)(puVar37 + -0x3c) = unaff_s3;\n  *(int *)(puVar37 + -0x40) = unaff_s2;\n  *(mbstate_t **)(puVar37 + -0x44) = pmVar32;\n  *(uchar **)(puVar37 + -0x48) = haystack;\n  *(mbstate_t **)(puVar37 + -0x110) = pmVar27;\n  *(undefined4 *)(puVar37 + -0x4c) = *puVar8;\n  needle_00 = pwc;\n  uVar6 = (*pcVar40)(pwc);\n  iVar17 = *(int *)(puVar37 + -0x118);\n  pmVar42 = (mbstate_t *)((ulonglong)uVar6 * 0x2c >> 0x20);\n  *(uint *)(puVar37 + -0x104) = uVar6;\n  puVar39 = puVar37 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar6 * 0x2c)) &&\n     (pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0)) {\n    if ((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1) {\n      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar38 = puVar37 + iVar10 + -0x128;\n      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);\n    }\n    else {\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }\n    pmVar27 = pmVar42;\n    puVar39 = puVar38;\n    if ((mbstate_t *)haystack != (mbstate_t *)0x0) {\n      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);\n      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n      *(undefined4 *)(puVar37 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar37 + -0xec) = 0;\n      *(undefined4 *)(puVar37 + -0x100) = uVar18;\n      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);\n      *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      puVar37[-0xf4] = 0;\n      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);\n      puVar37[-0xe8] = 0;\n      *(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);\n      unaff_s4 = (mbstate_t *)haystack;\n      do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );\n    }\n  }\n  _Var15 = false;\nLAB_0002db5c:\n  pmVar42 = *(mbstate_t **)(puVar37 + -0x4c);\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  puVar38 = puVar39;\n  if (pmVar42 == (mbstate_t *)**(undefined4 **)(puVar37 + -0x10c)) {\n    return _Var15;\n  }\n  goto LAB_0002e0e0;\nFUN_0002d8f0:\n  pmVar32 = (mbstate_t *)(uint)*(byte *)&pmVar27[6].__count;\n  do {\n    pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8);\n    if ((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')) {\n      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;\n      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4);\n  } while( true );\n  *(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4) = pwc;\nLAB_0002d978:\n  pwc = (mbstate_t *)((int)&pwc->__count + 1);\n  pmVar27 = pmVar27 + 5;\n  if (*(mbstate_t **)(puVar37 + -0x104) == pwc) goto LAB_0002d988;\n  goto FUN_0002d8f0;\nLAB_0002d988:\n  uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n  unaff_s4 = (mbstate_t *)(puVar37 + -0xb8);\n  uVar19 = *(undefined4 *)(puVar37 + -0x108);\n  unaff_s6 = (mbstate_t *)(puVar37 + -0x80);\n  unaff_s2 = 0;\n  *(undefined4 *)(puVar37 + -0xb8) = 0;\n  *(undefined4 *)(puVar37 + -0x100) = uVar18;\n  unaff_s3 = (mbstate_t *)(puVar37 + -0x68);\n  unaff_s5 = (mbstate_t *)(puVar37 + -0xa0);\n  *(undefined4 *)(puVar37 + -0xb4) = 0;\n  *(undefined4 *)(puVar37 + -0x80) = 0;\n  *(undefined4 *)(puVar37 + -0xac) = uVar19;\n  **(undefined4 **)(puVar37 + -0x110) = 0;\n  cVar14 = '\0';\n  *(undefined4 *)(puVar37 + -0x7c) = 0;\n  puVar37[-0xbc] = 0;\n  puVar37[-0xb0] = 0;\n  *(undefined4 *)(puVar37 + -0x74) = uVar19;\n  puVar37[-0x84] = 0;\n  puVar37[-0x78] = 0;\n  pmVar27 = pmVar42;\njoined_r0x0002d9dc:\n  do {\n    if (cVar14 == '\0') {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }\n    uVar6 = *(uint *)(puVar37 + -0x68);\n    if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;\n    iVar10 = unaff_s2 * 4;\n    pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\nLAB_0002da00:\n    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n    pmVar27 = pmVar32;\n    if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }\n    pwc = *(mbstate_t **)(iVar9 + iVar10);\n    *(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;\n    if (pwc == (mbstate_t *)0x0) {\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }\n    if (puVar37[-0xb0] == '\0') {\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }\n    pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n    if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;\n    while( true ) {\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }\n    cVar14 = puVar37[-0x78];\n    unaff_s2 = *(int *)(puVar37 + -0x108);\n  } while( true );\n  pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n  pwc = *(mbstate_t **)(puVar37 + -0x74);\nLAB_0002db1c:\n  pwc = (mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count);\n  unaff_s2 = unaff_s2 + 1;\n  puVar37[-0x78] = 0;\n  *(mbstate_t **)(puVar37 + -0x74) = pwc;\n  if (*(int *)(puVar37 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar17 + -0x7ca0))(haystack);\n    _Var15 = true;\n    iVar17 = *(int *)(puVar37 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002ef34:\n  pmVar11 = *(mbstate_t **)(puVar38 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002ddd4:\n  (*pcVar36)();\nLAB_0002dddc:\n  iVar10 = (*pcVar36)(unaff_s4);\n  iVar17 = *(int *)(puVar37 + -0x118);\n  if (iVar10 != 0) {\n    puVar37[-0xbc] = 1;\nLAB_0002ddf4:\n    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n    rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n  }\nLAB_0002e0bc:\n  pmVar27 = (mbstate_t *)0x96;\n  pcVar36 = *(code **)(iVar17 + -0x7bb0);\n  needle_00 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n  pmVar42 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x100);\n  (*pcVar36)();\nLAB_0002e0e0:\n  pcVar41 = mbsstr;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x47b00);\n  pcVar40 = *(code **)(pcVar36 + 0x47a80);\n  *(undefined4 **)(puVar38 + -0x154) = puVar8;\n  *(code **)(puVar38 + -0x170) = pcVar36 + 0x4f498;\n  *(mbstate_t **)(puVar38 + -0x1c) = unaff_s3;\n  *(int *)(puVar38 + -0x20) = unaff_s2;\n  *(code **)(puVar38 + -4) = pcVar41;\n  *(undefined1 **)(puVar38 + -8) = puVar37 + -0x128;\n  *(mbstate_t **)(puVar38 + -0xc) = pwc;\n  *(mbstate_t **)(puVar38 + -0x10) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x14) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x18) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x24) = pmVar32;\n  *(uchar **)(puVar38 + -0x28) = haystack;\n  *(undefined4 *)(puVar38 + -0x2c) = *puVar8;\n  pmVar26 = needle_00;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x170);\n  pmVar11 = pmVar42;\n  if (uVar6 < 2) {\n    unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count;\n    ps = (mbstate_t *)(puVar37 + -0x128);\n    if (unaff_s6 != (mbstate_t *)0x0) {\n      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }\nLAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;\n    }\nLAB_0002e2ac:\n    s = *(byte **)(puVar38 + -0x2c);\n    if (s == (byte *)**(undefined4 **)(puVar38 + -0x154)) {\n      return SUB41(pmVar11,0);\n    }\n  }\n  else {\n    bVar1 = *(byte *)&needle_00->__count;\n    haystack = puVar38 + -0x140;\n    iVar10 = *(int *)(iVar17 + -0x7c98);\n    *(undefined4 *)(puVar38 + -0x140) = 0;\n    pmVar26 = (mbstate_t *)(uint)bVar1;\n    *(undefined4 *)(puVar38 + -0x13c) = 0;\n    *(int *)(puVar38 + -0x168) = iVar10;\n    *(mbstate_t **)(puVar38 + -0x134) = needle_00;\n    puVar38[-0x144] = 0;\n    uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);\n    puVar38[-0x138] = 0;\n    if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  pcVar41 = mbsnwidth;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);\n  pcVar40 = *(code **)(pcVar36 + 0x46bd8);\n  *(undefined4 **)(puVar38 + -0x1bc) = puVar8;\n  *(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;\n  *(mbstate_t **)(puVar38 + -400) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;\n  pbVar33 = s + (int)pmVar26;\n  *(code **)(puVar38 + -0x184) = pcVar41;\n  *(mbstate_t **)(puVar38 + -0x188) = ps;\n  *(mbstate_t **)(puVar38 + -0x18c) = pwc;\n  *(mbstate_t **)(puVar38 + -0x194) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x198) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x19c) = needle_00;\n  *(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;\n  *(uchar **)(puVar38 + -0x1a8) = haystack;\n  *(mbstate_t **)(puVar38 + -0x178) = pmVar27;\n  *(undefined4 *)(puVar38 + -0x1ac) = *puVar8;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x1c8);\n  if (uVar6 < 2) {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }\nLAB_0002f060:\n  piVar22 = *(int **)(puVar38 + -0x1bc);\nLAB_0002f064:\n  string = *(char **)(puVar38 + -0x1ac);\n  if (string != (char *)*piVar22) {\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }\n  return SUB41(iVar10,0);\n}" type_identifier (function_declarator "knuth_morris_pratt(uchar *haystack,uchar *needle,size_t needle_len,uchar **resultp)" identifier (parameter_list "(uchar *haystack,uchar *needle,size_t needle_len,uchar **resultp)" ( (parameter_declaration "uchar *haystack" type_identifier (pointer_declarator "*haystack" * identifier)) , (parameter_declaration "uchar *needle" type_identifier (pointer_declarator "*needle" * identifier)) , (parameter_declaration "size_t needle_len" primitive_type identifier) , (parameter_declaration "uchar **resultp" type_identifier (pointer_declarator "**resultp" * (pointer_declarator "*resultp" * identifier))) ))) (compound_statement "{\n  byte bVar1;\n  ushort uVar2;\n  bool bVar3;\n  undefined4 *puVar4;\n  mbstate_t *pmVar5;\n  undefined3 extraout_var;\n  uint uVar6;\n  size_t sVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  char cVar14;\n  int iVar10;\n  _Bool _Var15;\n  mbstate_t *pmVar11;\n  undefined4 *puVar12;\n  undefined1 uVar16;\n  int *piVar13;\n  int iVar17;\n  uchar uVar23;\n  undefined4 uVar18;\n  undefined4 uVar19;\n  uchar *puVar20;\n  undefined4 *puVar21;\n  int *piVar22;\n  byte *s;\n  mbstate_t *pmVar24;\n  undefined4 *puVar25;\n  char *string;\n  mbstate_t *pwc;\n  mbstate_t *needle_00;\n  mbstate_t *pmVar26;\n  mbstate_t *pmVar27;\n  undefined4 uVar28;\n  mbstate_t *pmVar29;\n  mbstate_t *pmVar30;\n  size_t *psVar31;\n  mbstate_t *pmVar32;\n  byte *pbVar33;\n  int unaff_s2;\n  mbstate_t *unaff_s3;\n  mbstate_t *unaff_s4;\n  mbstate_t *unaff_s5;\n  mbstate_t *unaff_s6;\n  byte *pbVar34;\n  undefined4 unaff_s7;\n  undefined *puVar35;\n  code *pcVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  mbstate_t *ps;\n  code *pcVar40;\n  code *pcVar41;\n  mbstate_t *pmVar42;\n  undefined1 auStack_38 [16];\n  undefined4 uStack_1c;\n  int iStack_14;\n  \n  pmVar32 = (mbstate_t *)PTR___stack_chk_guard_00075be8;\n  puVar37 = auStack_38;\n  uVar6 = needle_len * 4;\n  iStack_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar6 < 0) || (needle_len >> 0x1e != 0)) {\nLAB_0002d620:\n    _Var15 = false;\n  }\n  else {\n    if (uVar6 < 0xfb1) {\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }\n    puVar37 = puVar39;\n    *(undefined4 *)(uVar6 + 4) = 1;\n    if (2 < needle_len) {\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }\n    *resultp = (uchar *)0x0;\n    sVar7 = 0;\n    uVar23 = *haystack;\n    puVar20 = haystack;\nLAB_0002d580:\n    if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    _Var15 = true;\n  }\nLAB_0002d5c8:\n  if (iStack_14 == pmVar32->__count) {\n    return _Var15;\n  }\n  pcVar40 = mbuiter_multi_next;\n  puVar35 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pmVar27 = (mbstate_t *)&DAT_000000b3;\n  iVar17 = *(int *)(puVar35 + 0x47f48);\n  pcVar36 = *(code **)(puVar35 + 0x48360);\n  pwc = (mbstate_t *)(*(int *)(puVar35 + 0x47f48) + -0x120);\n  *(undefined **)(puVar37 + -0x10) = puVar35 + 0x4ff10;\n  *(code **)(puVar37 + -4) = pcVar40;\n  pcVar41 = knuth_morris_pratt_multibyte;\n  iVar17 = iVar17 + -0x114;\n  (*pcVar36)();\n  puVar38 = puVar37 + -0x128;\n  ps = (mbstate_t *)(puVar37 + -0x128);\n  puVar8 = *(undefined4 **)(pcVar36 + 0x4853c);\n  pcVar40 = *(code **)(pcVar36 + 0x48238);\n  *(undefined1 **)(puVar37 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar37 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar37 + -0x10c) = puVar8;\n  *(code **)(puVar37 + -0x118) = pcVar36 + 0x4fed4;\n  *(int *)(puVar37 + -0x108) = iVar17;\n  *(code **)(puVar37 + -0x24) = pcVar41;\n  *(mbstate_t **)(puVar37 + -0x30) = unaff_s6;\n  *(mbstate_t **)(puVar37 + -0x34) = unaff_s5;\n  *(mbstate_t **)(puVar37 + -0x38) = unaff_s4;\n  *(mbstate_t **)(puVar37 + -0x3c) = unaff_s3;\n  *(int *)(puVar37 + -0x40) = unaff_s2;\n  *(mbstate_t **)(puVar37 + -0x44) = pmVar32;\n  *(uchar **)(puVar37 + -0x48) = haystack;\n  *(mbstate_t **)(puVar37 + -0x110) = pmVar27;\n  *(undefined4 *)(puVar37 + -0x4c) = *puVar8;\n  needle_00 = pwc;\n  uVar6 = (*pcVar40)(pwc);\n  iVar17 = *(int *)(puVar37 + -0x118);\n  pmVar42 = (mbstate_t *)((ulonglong)uVar6 * 0x2c >> 0x20);\n  *(uint *)(puVar37 + -0x104) = uVar6;\n  puVar39 = puVar37 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar6 * 0x2c)) &&\n     (pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0)) {\n    if ((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1) {\n      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar38 = puVar37 + iVar10 + -0x128;\n      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);\n    }\n    else {\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }\n    pmVar27 = pmVar42;\n    puVar39 = puVar38;\n    if ((mbstate_t *)haystack != (mbstate_t *)0x0) {\n      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);\n      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n      *(undefined4 *)(puVar37 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar37 + -0xec) = 0;\n      *(undefined4 *)(puVar37 + -0x100) = uVar18;\n      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);\n      *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      puVar37[-0xf4] = 0;\n      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);\n      puVar37[-0xe8] = 0;\n      *(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);\n      unaff_s4 = (mbstate_t *)haystack;\n      do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );\n    }\n  }\n  _Var15 = false;\nLAB_0002db5c:\n  pmVar42 = *(mbstate_t **)(puVar37 + -0x4c);\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  puVar38 = puVar39;\n  if (pmVar42 == (mbstate_t *)**(undefined4 **)(puVar37 + -0x10c)) {\n    return _Var15;\n  }\n  goto LAB_0002e0e0;\nFUN_0002d8f0:\n  pmVar32 = (mbstate_t *)(uint)*(byte *)&pmVar27[6].__count;\n  do {\n    pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8);\n    if ((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')) {\n      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;\n      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4);\n  } while( true );\n  *(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4) = pwc;\nLAB_0002d978:\n  pwc = (mbstate_t *)((int)&pwc->__count + 1);\n  pmVar27 = pmVar27 + 5;\n  if (*(mbstate_t **)(puVar37 + -0x104) == pwc) goto LAB_0002d988;\n  goto FUN_0002d8f0;\nLAB_0002d988:\n  uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n  unaff_s4 = (mbstate_t *)(puVar37 + -0xb8);\n  uVar19 = *(undefined4 *)(puVar37 + -0x108);\n  unaff_s6 = (mbstate_t *)(puVar37 + -0x80);\n  unaff_s2 = 0;\n  *(undefined4 *)(puVar37 + -0xb8) = 0;\n  *(undefined4 *)(puVar37 + -0x100) = uVar18;\n  unaff_s3 = (mbstate_t *)(puVar37 + -0x68);\n  unaff_s5 = (mbstate_t *)(puVar37 + -0xa0);\n  *(undefined4 *)(puVar37 + -0xb4) = 0;\n  *(undefined4 *)(puVar37 + -0x80) = 0;\n  *(undefined4 *)(puVar37 + -0xac) = uVar19;\n  **(undefined4 **)(puVar37 + -0x110) = 0;\n  cVar14 = '\0';\n  *(undefined4 *)(puVar37 + -0x7c) = 0;\n  puVar37[-0xbc] = 0;\n  puVar37[-0xb0] = 0;\n  *(undefined4 *)(puVar37 + -0x74) = uVar19;\n  puVar37[-0x84] = 0;\n  puVar37[-0x78] = 0;\n  pmVar27 = pmVar42;\njoined_r0x0002d9dc:\n  do {\n    if (cVar14 == '\0') {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }\n    uVar6 = *(uint *)(puVar37 + -0x68);\n    if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;\n    iVar10 = unaff_s2 * 4;\n    pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\nLAB_0002da00:\n    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n    pmVar27 = pmVar32;\n    if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }\n    pwc = *(mbstate_t **)(iVar9 + iVar10);\n    *(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;\n    if (pwc == (mbstate_t *)0x0) {\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }\n    if (puVar37[-0xb0] == '\0') {\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }\n    pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n    if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;\n    while( true ) {\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }\n    cVar14 = puVar37[-0x78];\n    unaff_s2 = *(int *)(puVar37 + -0x108);\n  } while( true );\n  pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n  pwc = *(mbstate_t **)(puVar37 + -0x74);\nLAB_0002db1c:\n  pwc = (mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count);\n  unaff_s2 = unaff_s2 + 1;\n  puVar37[-0x78] = 0;\n  *(mbstate_t **)(puVar37 + -0x74) = pwc;\n  if (*(int *)(puVar37 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar17 + -0x7ca0))(haystack);\n    _Var15 = true;\n    iVar17 = *(int *)(puVar37 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002ef34:\n  pmVar11 = *(mbstate_t **)(puVar38 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002ddd4:\n  (*pcVar36)();\nLAB_0002dddc:\n  iVar10 = (*pcVar36)(unaff_s4);\n  iVar17 = *(int *)(puVar37 + -0x118);\n  if (iVar10 != 0) {\n    puVar37[-0xbc] = 1;\nLAB_0002ddf4:\n    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n    rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n  }\nLAB_0002e0bc:\n  pmVar27 = (mbstate_t *)0x96;\n  pcVar36 = *(code **)(iVar17 + -0x7bb0);\n  needle_00 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n  pmVar42 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x100);\n  (*pcVar36)();\nLAB_0002e0e0:\n  pcVar41 = mbsstr;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x47b00);\n  pcVar40 = *(code **)(pcVar36 + 0x47a80);\n  *(undefined4 **)(puVar38 + -0x154) = puVar8;\n  *(code **)(puVar38 + -0x170) = pcVar36 + 0x4f498;\n  *(mbstate_t **)(puVar38 + -0x1c) = unaff_s3;\n  *(int *)(puVar38 + -0x20) = unaff_s2;\n  *(code **)(puVar38 + -4) = pcVar41;\n  *(undefined1 **)(puVar38 + -8) = puVar37 + -0x128;\n  *(mbstate_t **)(puVar38 + -0xc) = pwc;\n  *(mbstate_t **)(puVar38 + -0x10) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x14) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x18) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x24) = pmVar32;\n  *(uchar **)(puVar38 + -0x28) = haystack;\n  *(undefined4 *)(puVar38 + -0x2c) = *puVar8;\n  pmVar26 = needle_00;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x170);\n  pmVar11 = pmVar42;\n  if (uVar6 < 2) {\n    unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count;\n    ps = (mbstate_t *)(puVar37 + -0x128);\n    if (unaff_s6 != (mbstate_t *)0x0) {\n      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }\nLAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;\n    }\nLAB_0002e2ac:\n    s = *(byte **)(puVar38 + -0x2c);\n    if (s == (byte *)**(undefined4 **)(puVar38 + -0x154)) {\n      return SUB41(pmVar11,0);\n    }\n  }\n  else {\n    bVar1 = *(byte *)&needle_00->__count;\n    haystack = puVar38 + -0x140;\n    iVar10 = *(int *)(iVar17 + -0x7c98);\n    *(undefined4 *)(puVar38 + -0x140) = 0;\n    pmVar26 = (mbstate_t *)(uint)bVar1;\n    *(undefined4 *)(puVar38 + -0x13c) = 0;\n    *(int *)(puVar38 + -0x168) = iVar10;\n    *(mbstate_t **)(puVar38 + -0x134) = needle_00;\n    puVar38[-0x144] = 0;\n    uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);\n    puVar38[-0x138] = 0;\n    if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  pcVar41 = mbsnwidth;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);\n  pcVar40 = *(code **)(pcVar36 + 0x46bd8);\n  *(undefined4 **)(puVar38 + -0x1bc) = puVar8;\n  *(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;\n  *(mbstate_t **)(puVar38 + -400) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;\n  pbVar33 = s + (int)pmVar26;\n  *(code **)(puVar38 + -0x184) = pcVar41;\n  *(mbstate_t **)(puVar38 + -0x188) = ps;\n  *(mbstate_t **)(puVar38 + -0x18c) = pwc;\n  *(mbstate_t **)(puVar38 + -0x194) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x198) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x19c) = needle_00;\n  *(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;\n  *(uchar **)(puVar38 + -0x1a8) = haystack;\n  *(mbstate_t **)(puVar38 + -0x178) = pmVar27;\n  *(undefined4 *)(puVar38 + -0x1ac) = *puVar8;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x1c8);\n  if (uVar6 < 2) {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }\nLAB_0002f060:\n  piVar22 = *(int **)(puVar38 + -0x1bc);\nLAB_0002f064:\n  string = *(char **)(puVar38 + -0x1ac);\n  if (string != (char *)*piVar22) {\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }\n  return SUB41(iVar10,0);\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "mbstate_t *pmVar5;" type_identifier (pointer_declarator "*pmVar5" * identifier) ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "_Bool _Var15;" type_identifier identifier ;) (declaration "mbstate_t *pmVar11;" type_identifier (pointer_declarator "*pmVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 uVar16;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uchar uVar23;" type_identifier identifier ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "uchar *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "undefined4 *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "int *piVar22;" primitive_type (pointer_declarator "*piVar22" * identifier) ;) (declaration "byte *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "mbstate_t *pmVar24;" type_identifier (pointer_declarator "*pmVar24" * identifier) ;) (declaration "undefined4 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "char *string;" primitive_type (pointer_declarator "*string" * identifier) ;) (declaration "mbstate_t *pwc;" type_identifier (pointer_declarator "*pwc" * identifier) ;) (declaration "mbstate_t *needle_00;" type_identifier (pointer_declarator "*needle_00" * identifier) ;) (declaration "mbstate_t *pmVar26;" type_identifier (pointer_declarator "*pmVar26" * identifier) ;) (declaration "mbstate_t *pmVar27;" type_identifier (pointer_declarator "*pmVar27" * identifier) ;) (declaration "undefined4 uVar28;" type_identifier identifier ;) (declaration "mbstate_t *pmVar29;" type_identifier (pointer_declarator "*pmVar29" * identifier) ;) (declaration "mbstate_t *pmVar30;" type_identifier (pointer_declarator "*pmVar30" * identifier) ;) (declaration "size_t *psVar31;" primitive_type (pointer_declarator "*psVar31" * identifier) ;) (declaration "mbstate_t *pmVar32;" type_identifier (pointer_declarator "*pmVar32" * identifier) ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "int unaff_s2;" primitive_type identifier ;) (declaration "mbstate_t *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "mbstate_t *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "mbstate_t *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "mbstate_t *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "byte *pbVar34;" type_identifier (pointer_declarator "*pbVar34" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar35;" type_identifier (pointer_declarator "*puVar35" * identifier) ;) (declaration "code *pcVar36;" type_identifier (pointer_declarator "*pcVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "undefined1 *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "undefined1 *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "mbstate_t *ps;" type_identifier (pointer_declarator "*ps" * identifier) ;) (declaration "code *pcVar40;" type_identifier (pointer_declarator "*pcVar40" * identifier) ;) (declaration "code *pcVar41;" type_identifier (pointer_declarator "*pcVar41" * identifier) ;) (declaration "mbstate_t *pmVar42;" type_identifier (pointer_declarator "*pmVar42" * identifier) ;) (declaration "undefined1 auStack_38 [16];" type_identifier (array_declarator "auStack_38 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_1c;" type_identifier identifier ;) (declaration "int iStack_14;" primitive_type identifier ;) (expression_statement "pmVar32 = (mbstate_t *)PTR___stack_chk_guard_00075be8;" (assignment_expression "pmVar32 = (mbstate_t *)PTR___stack_chk_guard_00075be8" identifier = (cast_expression "(mbstate_t *)PTR___stack_chk_guard_00075be8" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar37 = auStack_38;" (assignment_expression "puVar37 = auStack_38" identifier = identifier) ;) (expression_statement "uVar6 = needle_len * 4;" (assignment_expression "uVar6 = needle_len * 4" identifier = (binary_expression "needle_len * 4" identifier * number_literal)) ;) (expression_statement "iStack_14 = *(int *)PTR___stack_chk_guard_00075be8;" (assignment_expression "iStack_14 = *(int *)PTR___stack_chk_guard_00075be8" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00075be8" * (cast_expression "(int *)PTR___stack_chk_guard_00075be8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (((int)uVar6 < 0) || (needle_len >> 0x1e != 0)) {\nLAB_0002d620:\n    _Var15 = false;\n  }\n  else {\n    if (uVar6 < 0xfb1) {\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }\n    puVar37 = puVar39;\n    *(undefined4 *)(uVar6 + 4) = 1;\n    if (2 < needle_len) {\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }\n    *resultp = (uchar *)0x0;\n    sVar7 = 0;\n    uVar23 = *haystack;\n    puVar20 = haystack;\nLAB_0002d580:\n    if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    _Var15 = true;\n  }" if (parenthesized_expression "(((int)uVar6 < 0) || (needle_len >> 0x1e != 0))" ( (binary_expression "((int)uVar6 < 0) || (needle_len >> 0x1e != 0)" (parenthesized_expression "((int)uVar6 < 0)" ( (binary_expression "(int)uVar6 < 0" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(needle_len >> 0x1e != 0)" ( (binary_expression "needle_len >> 0x1e != 0" (binary_expression "needle_len >> 0x1e" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_0002d620:\n    _Var15 = false;\n  }" { (labeled_statement "LAB_0002d620:\n    _Var15 = false;" statement_identifier : (expression_statement "_Var15 = false;" (assignment_expression "_Var15 = false" identifier = false) ;)) }) (else_clause "else {\n    if (uVar6 < 0xfb1) {\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }\n    puVar37 = puVar39;\n    *(undefined4 *)(uVar6 + 4) = 1;\n    if (2 < needle_len) {\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }\n    *resultp = (uchar *)0x0;\n    sVar7 = 0;\n    uVar23 = *haystack;\n    puVar20 = haystack;\nLAB_0002d580:\n    if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    _Var15 = true;\n  }" else (compound_statement "{\n    if (uVar6 < 0xfb1) {\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }\n    puVar37 = puVar39;\n    *(undefined4 *)(uVar6 + 4) = 1;\n    if (2 < needle_len) {\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }\n    *resultp = (uchar *)0x0;\n    sVar7 = 0;\n    uVar23 = *haystack;\n    puVar20 = haystack;\nLAB_0002d580:\n    if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    _Var15 = true;\n  }" { (if_statement "if (uVar6 < 0xfb1) {\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }" if (parenthesized_expression "(uVar6 < 0xfb1)" ( (binary_expression "uVar6 < 0xfb1" identifier < number_literal) )) (compound_statement "{\n      iVar17 = -(uVar6 + 0x16 & 0xfffffff8);\n      puVar37 = auStack_38 + iVar17;\n      uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;\n      _Var15 = false;\n      puVar39 = auStack_38 + iVar17;\n      if (uVar6 == 0) goto LAB_0002d5c8;\n    }" { (expression_statement "iVar17 = -(uVar6 + 0x16 & 0xfffffff8);" (assignment_expression "iVar17 = -(uVar6 + 0x16 & 0xfffffff8)" identifier = (unary_expression "-(uVar6 + 0x16 & 0xfffffff8)" - (parenthesized_expression "(uVar6 + 0x16 & 0xfffffff8)" ( (binary_expression "uVar6 + 0x16 & 0xfffffff8" (binary_expression "uVar6 + 0x16" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar37 = auStack_38 + iVar17;" (assignment_expression "puVar37 = auStack_38 + iVar17" identifier = (binary_expression "auStack_38 + iVar17" identifier + identifier)) ;) (expression_statement "uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0;" (assignment_expression "uVar6 = (int)&uStack_1c + iVar17 + 3 & 0xfffffff0" identifier = (binary_expression "(int)&uStack_1c + iVar17 + 3 & 0xfffffff0" (binary_expression "(int)&uStack_1c + iVar17 + 3" (binary_expression "(int)&uStack_1c + iVar17" (cast_expression "(int)&uStack_1c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&uStack_1c" & identifier)) + identifier) + number_literal) & number_literal)) ;) (expression_statement "_Var15 = false;" (assignment_expression "_Var15 = false" identifier = false) ;) (expression_statement "puVar39 = auStack_38 + iVar17;" (assignment_expression "puVar39 = auStack_38 + iVar17" identifier = (binary_expression "auStack_38 + iVar17" identifier + identifier)) ;) (if_statement "if (uVar6 == 0) goto LAB_0002d5c8;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d5c8;" goto statement_identifier ;)) }) (else_clause "else {\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }" else (compound_statement "{\n      uStack_1c = needle;\n      uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);\n      needle = uStack_1c;\n      puVar39 = auStack_38;\n      if (uVar6 == 0) goto LAB_0002d620;\n    }" { (expression_statement "uStack_1c = needle;" (assignment_expression "uStack_1c = needle" identifier = identifier) ;) (expression_statement "uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6);" (assignment_expression "uVar6 = (*(code *)PTR_mmalloca_000758dc)(uVar6)" identifier = (call_expression "(*(code *)PTR_mmalloca_000758dc)(uVar6)" (parenthesized_expression "(*(code *)PTR_mmalloca_000758dc)" ( (pointer_expression "*(code *)PTR_mmalloca_000758dc" * (cast_expression "(code *)PTR_mmalloca_000758dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar6)" ( identifier )))) ;) (expression_statement "needle = uStack_1c;" (assignment_expression "needle = uStack_1c" identifier = identifier) ;) (expression_statement "puVar39 = auStack_38;" (assignment_expression "puVar39 = auStack_38" identifier = identifier) ;) (if_statement "if (uVar6 == 0) goto LAB_0002d620;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d620;" goto statement_identifier ;)) }))) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" identifier = identifier) ;) (expression_statement "*(undefined4 *)(uVar6 + 4) = 1;" (assignment_expression "*(undefined4 *)(uVar6 + 4) = 1" (pointer_expression "*(undefined4 *)(uVar6 + 4)" * (cast_expression "(undefined4 *)(uVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 4)" ( (binary_expression "uVar6 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (2 < needle_len) {\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }" if (parenthesized_expression "(2 < needle_len)" ( (binary_expression "2 < needle_len" number_literal < identifier) )) (compound_statement "{\n      psVar31 = (size_t *)(uVar6 + 8);\n      iVar17 = 0;\n      sVar7 = 2;\n      do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);\n    }" { (expression_statement "psVar31 = (size_t *)(uVar6 + 8);" (assignment_expression "psVar31 = (size_t *)(uVar6 + 8)" identifier = (cast_expression "(size_t *)(uVar6 + 8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 8)" ( (binary_expression "uVar6 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "sVar7 = 2;" (assignment_expression "sVar7 = 2" identifier = number_literal) ;) (do_statement "do {\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      } while (needle_len != sVar7);" do (compound_statement "{\n        uVar23 = needle[iVar17];\n        while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }\n        iVar17 = iVar17 + 1;\n        *psVar31 = sVar7 - iVar17;\nLAB_0002d564:\n        sVar7 = sVar7 + 1;\n        psVar31 = psVar31 + 1;\n      }" { (expression_statement "uVar23 = needle[iVar17];" (assignment_expression "uVar23 = needle[iVar17]" identifier = (subscript_expression "needle[iVar17]" identifier [ identifier ])) ;) (while_statement "while (uVar23 != needle[sVar7 - 1]) {\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }" while (parenthesized_expression "(uVar23 != needle[sVar7 - 1])" ( (binary_expression "uVar23 != needle[sVar7 - 1]" identifier != (subscript_expression "needle[sVar7 - 1]" identifier [ (binary_expression "sVar7 - 1" identifier - number_literal) ])) )) (compound_statement "{\n          if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }\n          iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);\n          uVar23 = needle[iVar17];\n        }" { (if_statement "if (iVar17 == 0) {\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar17 = 0;\n            *psVar31 = sVar7;\n            goto LAB_0002d564;\n          }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "*psVar31 = sVar7;" (assignment_expression "*psVar31 = sVar7" (pointer_expression "*psVar31" * identifier) = identifier) ;) (goto_statement "goto LAB_0002d564;" goto statement_identifier ;) })) (expression_statement "iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4);" (assignment_expression "iVar17 = iVar17 - *(int *)(uVar6 + iVar17 * 4)" identifier = (binary_expression "iVar17 - *(int *)(uVar6 + iVar17 * 4)" identifier - (pointer_expression "*(int *)(uVar6 + iVar17 * 4)" * (cast_expression "(int *)(uVar6 + iVar17 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + iVar17 * 4)" ( (binary_expression "uVar6 + iVar17 * 4" identifier + (binary_expression "iVar17 * 4" identifier * number_literal)) )))))) ;) (expression_statement "uVar23 = needle[iVar17];" (assignment_expression "uVar23 = needle[iVar17]" identifier = (subscript_expression "needle[iVar17]" identifier [ identifier ])) ;) })) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) (expression_statement "*psVar31 = sVar7 - iVar17;" (assignment_expression "*psVar31 = sVar7 - iVar17" (pointer_expression "*psVar31" * identifier) = (binary_expression "sVar7 - iVar17" identifier - identifier)) ;) (labeled_statement "LAB_0002d564:\n        sVar7 = sVar7 + 1;" statement_identifier : (expression_statement "sVar7 = sVar7 + 1;" (assignment_expression "sVar7 = sVar7 + 1" identifier = (binary_expression "sVar7 + 1" identifier + number_literal)) ;)) (expression_statement "psVar31 = psVar31 + 1;" (assignment_expression "psVar31 = psVar31 + 1" identifier = (binary_expression "psVar31 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(needle_len != sVar7)" ( (binary_expression "needle_len != sVar7" identifier != identifier) )) ;) })) (expression_statement "*resultp = (uchar *)0x0;" (assignment_expression "*resultp = (uchar *)0x0" (pointer_expression "*resultp" * identifier) = (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sVar7 = 0;" (assignment_expression "sVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar23 = *haystack;" (assignment_expression "uVar23 = *haystack" identifier = (pointer_expression "*haystack" * identifier)) ;) (expression_statement "puVar20 = haystack;" (assignment_expression "puVar20 = haystack" identifier = identifier) ;) (labeled_statement "LAB_0002d580:\n    if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }" statement_identifier : (if_statement "if (uVar23 != '\0') {\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }" if (parenthesized_expression "(uVar23 != '\0')" ( (binary_expression "uVar23 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }\n      sVar7 = sVar7 + 1;\n      if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }\n      uVar23 = puVar20[1];\n      puVar20 = puVar20 + 1;\n      goto LAB_0002d580;\n    }" { (while_statement "while (needle[sVar7] != uVar23) {\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }" while (parenthesized_expression "(needle[sVar7] != uVar23)" ( (binary_expression "needle[sVar7] != uVar23" (subscript_expression "needle[sVar7]" identifier [ identifier ]) != identifier) )) (compound_statement "{\n        if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }\n        iVar17 = *(int *)(uVar6 + sVar7 * 4);\n        haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);\n        sVar7 = sVar7 - iVar17;\n        if (uVar23 == '\0') goto LAB_0002d5b8;\n      }" { (if_statement "if (sVar7 == 0) {\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }" if (parenthesized_expression "(sVar7 == 0)" ( (binary_expression "sVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar23 = puVar20[1];\n          haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n          puVar20 = puVar20 + 1;\n          goto LAB_0002d580;\n        }" { (expression_statement "uVar23 = puVar20[1];" (assignment_expression "uVar23 = puVar20[1]" identifier = (subscript_expression "puVar20[1]" identifier [ number_literal ])) ;) (expression_statement "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);" (assignment_expression "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1)" identifier = (cast_expression "(uchar *)((int)&((mbstate_t *)haystack)->__count + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((mbstate_t *)haystack)->__count + 1)" ( (binary_expression "(int)&((mbstate_t *)haystack)->__count + 1" (cast_expression "(int)&((mbstate_t *)haystack)->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((mbstate_t *)haystack)->__count" & (field_expression "((mbstate_t *)haystack)->__count" (parenthesized_expression "((mbstate_t *)haystack)" ( (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002d580;" goto statement_identifier ;) })) (expression_statement "iVar17 = *(int *)(uVar6 + sVar7 * 4);" (assignment_expression "iVar17 = *(int *)(uVar6 + sVar7 * 4)" identifier = (pointer_expression "*(int *)(uVar6 + sVar7 * 4)" * (cast_expression "(int *)(uVar6 + sVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + sVar7 * 4)" ( (binary_expression "uVar6 + sVar7 * 4" identifier + (binary_expression "sVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17);" (assignment_expression "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17)" identifier = (cast_expression "(uchar *)((int)&((mbstate_t *)haystack)->__count + iVar17)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((mbstate_t *)haystack)->__count + iVar17)" ( (binary_expression "(int)&((mbstate_t *)haystack)->__count + iVar17" (cast_expression "(int)&((mbstate_t *)haystack)->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((mbstate_t *)haystack)->__count" & (field_expression "((mbstate_t *)haystack)->__count" (parenthesized_expression "((mbstate_t *)haystack)" ( (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + identifier) )))) ;) (expression_statement "sVar7 = sVar7 - iVar17;" (assignment_expression "sVar7 = sVar7 - iVar17" identifier = (binary_expression "sVar7 - iVar17" identifier - identifier)) ;) (if_statement "if (uVar23 == '\0') goto LAB_0002d5b8;" if (parenthesized_expression "(uVar23 == '\0')" ( (binary_expression "uVar23 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002d5b8;" goto statement_identifier ;)) })) (expression_statement "sVar7 = sVar7 + 1;" (assignment_expression "sVar7 = sVar7 + 1" identifier = (binary_expression "sVar7 + 1" identifier + number_literal)) ;) (if_statement "if (needle_len == sVar7) {\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }" if (parenthesized_expression "(needle_len == sVar7)" ( (binary_expression "needle_len == sVar7" identifier == identifier) )) (compound_statement "{\n        *resultp = haystack;\n        goto LAB_0002d5b8;\n      }" { (expression_statement "*resultp = haystack;" (assignment_expression "*resultp = haystack" (pointer_expression "*resultp" * identifier) = identifier) ;) (goto_statement "goto LAB_0002d5b8;" goto statement_identifier ;) })) (expression_statement "uVar23 = puVar20[1];" (assignment_expression "uVar23 = puVar20[1]" identifier = (subscript_expression "puVar20[1]" identifier [ number_literal ])) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002d580;" goto statement_identifier ;) }))) (labeled_statement "LAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();" statement_identifier : (expression_statement "(*(code *)PTR_freea_000758e0)();" (call_expression "(*(code *)PTR_freea_000758e0)()" (parenthesized_expression "(*(code *)PTR_freea_000758e0)" ( (pointer_expression "*(code *)PTR_freea_000758e0" * (cast_expression "(code *)PTR_freea_000758e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "_Var15 = true;" (assignment_expression "_Var15 = true" identifier = true) ;) }))) (labeled_statement "LAB_0002d5c8:\n  if (iStack_14 == pmVar32->__count) {\n    return _Var15;\n  }" statement_identifier : (if_statement "if (iStack_14 == pmVar32->__count) {\n    return _Var15;\n  }" if (parenthesized_expression "(iStack_14 == pmVar32->__count)" ( (binary_expression "iStack_14 == pmVar32->__count" identifier == (field_expression "pmVar32->__count" identifier -> field_identifier)) )) (compound_statement "{\n    return _Var15;\n  }" { (return_statement "return _Var15;" return identifier ;) }))) (expression_statement "pcVar40 = mbuiter_multi_next;" (assignment_expression "pcVar40 = mbuiter_multi_next" identifier = identifier) ;) (expression_statement "puVar35 = PTR___stack_chk_fail_00075ba8;" (assignment_expression "puVar35 = PTR___stack_chk_fail_00075ba8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00075ba8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00075ba8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00075ba8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00075ba8" * (cast_expression "(code *)PTR___stack_chk_fail_00075ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pmVar27 = (mbstate_t *)&DAT_000000b3;" (assignment_expression "pmVar27 = (mbstate_t *)&DAT_000000b3" identifier = (cast_expression "(mbstate_t *)&DAT_000000b3" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_000000b3" & identifier))) ;) (expression_statement "iVar17 = *(int *)(puVar35 + 0x47f48);" (assignment_expression "iVar17 = *(int *)(puVar35 + 0x47f48)" identifier = (pointer_expression "*(int *)(puVar35 + 0x47f48)" * (cast_expression "(int *)(puVar35 + 0x47f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + 0x47f48)" ( (binary_expression "puVar35 + 0x47f48" identifier + number_literal) ))))) ;) (expression_statement "pcVar36 = *(code **)(puVar35 + 0x48360);" (assignment_expression "pcVar36 = *(code **)(puVar35 + 0x48360)" identifier = (pointer_expression "*(code **)(puVar35 + 0x48360)" * (cast_expression "(code **)(puVar35 + 0x48360)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + 0x48360)" ( (binary_expression "puVar35 + 0x48360" identifier + number_literal) ))))) ;) (expression_statement "pwc = (mbstate_t *)(*(int *)(puVar35 + 0x47f48) + -0x120);" (assignment_expression "pwc = (mbstate_t *)(*(int *)(puVar35 + 0x47f48) + -0x120)" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar35 + 0x47f48) + -0x120)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + 0x47f48) + -0x120)" ( (binary_expression "*(int *)(puVar35 + 0x47f48) + -0x120" (pointer_expression "*(int *)(puVar35 + 0x47f48)" * (cast_expression "(int *)(puVar35 + 0x47f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + 0x47f48)" ( (binary_expression "puVar35 + 0x47f48" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*(undefined **)(puVar37 + -0x10) = puVar35 + 0x4ff10;" (assignment_expression "*(undefined **)(puVar37 + -0x10) = puVar35 + 0x4ff10" (pointer_expression "*(undefined **)(puVar37 + -0x10)" * (cast_expression "(undefined **)(puVar37 + -0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x10)" ( (binary_expression "puVar37 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar35 + 0x4ff10" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar37 + -4) = pcVar40;" (assignment_expression "*(code **)(puVar37 + -4) = pcVar40" (pointer_expression "*(code **)(puVar37 + -4)" * (cast_expression "(code **)(puVar37 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -4)" ( (binary_expression "puVar37 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pcVar41 = knuth_morris_pratt_multibyte;" (assignment_expression "pcVar41 = knuth_morris_pratt_multibyte" identifier = identifier) ;) (expression_statement "iVar17 = iVar17 + -0x114;" (assignment_expression "iVar17 = iVar17 + -0x114" identifier = (binary_expression "iVar17 + -0x114" identifier + number_literal)) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar38 = puVar37 + -0x128;" (assignment_expression "puVar38 = puVar37 + -0x128" identifier = (binary_expression "puVar37 + -0x128" identifier + number_literal)) ;) (expression_statement "ps = (mbstate_t *)(puVar37 + -0x128);" (assignment_expression "ps = (mbstate_t *)(puVar37 + -0x128)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0x128)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x128)" ( (binary_expression "puVar37 + -0x128" identifier + number_literal) )))) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar36 + 0x4853c);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar36 + 0x4853c)" identifier = (pointer_expression "*(undefined4 **)(pcVar36 + 0x4853c)" * (cast_expression "(undefined4 **)(pcVar36 + 0x4853c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x4853c)" ( (binary_expression "pcVar36 + 0x4853c" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar36 + 0x48238);" (assignment_expression "pcVar40 = *(code **)(pcVar36 + 0x48238)" identifier = (pointer_expression "*(code **)(pcVar36 + 0x48238)" * (cast_expression "(code **)(pcVar36 + 0x48238)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x48238)" ( (binary_expression "pcVar36 + 0x48238" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar37 + -0x28) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar37 + -0x28) = auStack_38" (pointer_expression "*(undefined1 **)(puVar37 + -0x28)" * (cast_expression "(undefined1 **)(puVar37 + -0x28)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x28)" ( (binary_expression "puVar37 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x2c) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar37 + -0x2c) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar37 + -0x2c)" * (cast_expression "(undefined4 *)(puVar37 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x2c)" ( (binary_expression "puVar37 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar37 + -0x10c) = puVar8;" (assignment_expression "*(undefined4 **)(puVar37 + -0x10c) = puVar8" (pointer_expression "*(undefined4 **)(puVar37 + -0x10c)" * (cast_expression "(undefined4 **)(puVar37 + -0x10c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x10c)" ( (binary_expression "puVar37 + -0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar37 + -0x118) = pcVar36 + 0x4fed4;" (assignment_expression "*(code **)(puVar37 + -0x118) = pcVar36 + 0x4fed4" (pointer_expression "*(code **)(puVar37 + -0x118)" * (cast_expression "(code **)(puVar37 + -0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) )))) = (binary_expression "pcVar36 + 0x4fed4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar37 + -0x108) = iVar17;" (assignment_expression "*(int *)(puVar37 + -0x108) = iVar17" (pointer_expression "*(int *)(puVar37 + -0x108)" * (cast_expression "(int *)(puVar37 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x108)" ( (binary_expression "puVar37 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar37 + -0x24) = pcVar41;" (assignment_expression "*(code **)(puVar37 + -0x24) = pcVar41" (pointer_expression "*(code **)(puVar37 + -0x24)" * (cast_expression "(code **)(puVar37 + -0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x24)" ( (binary_expression "puVar37 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x30) = unaff_s6;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x30) = unaff_s6" (pointer_expression "*(mbstate_t **)(puVar37 + -0x30)" * (cast_expression "(mbstate_t **)(puVar37 + -0x30)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x30)" ( (binary_expression "puVar37 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x34) = unaff_s5;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x34) = unaff_s5" (pointer_expression "*(mbstate_t **)(puVar37 + -0x34)" * (cast_expression "(mbstate_t **)(puVar37 + -0x34)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x34)" ( (binary_expression "puVar37 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x38) = unaff_s4;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x38) = unaff_s4" (pointer_expression "*(mbstate_t **)(puVar37 + -0x38)" * (cast_expression "(mbstate_t **)(puVar37 + -0x38)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x38)" ( (binary_expression "puVar37 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x3c) = unaff_s3;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x3c) = unaff_s3" (pointer_expression "*(mbstate_t **)(puVar37 + -0x3c)" * (cast_expression "(mbstate_t **)(puVar37 + -0x3c)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x3c)" ( (binary_expression "puVar37 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar37 + -0x40) = unaff_s2;" (assignment_expression "*(int *)(puVar37 + -0x40) = unaff_s2" (pointer_expression "*(int *)(puVar37 + -0x40)" * (cast_expression "(int *)(puVar37 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x40)" ( (binary_expression "puVar37 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x44) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x44) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar37 + -0x44)" * (cast_expression "(mbstate_t **)(puVar37 + -0x44)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x44)" ( (binary_expression "puVar37 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uchar **)(puVar37 + -0x48) = haystack;" (assignment_expression "*(uchar **)(puVar37 + -0x48) = haystack" (pointer_expression "*(uchar **)(puVar37 + -0x48)" * (cast_expression "(uchar **)(puVar37 + -0x48)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x48)" ( (binary_expression "puVar37 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x110) = pmVar27;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x110) = pmVar27" (pointer_expression "*(mbstate_t **)(puVar37 + -0x110)" * (cast_expression "(mbstate_t **)(puVar37 + -0x110)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x110)" ( (binary_expression "puVar37 + -0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x4c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar37 + -0x4c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar37 + -0x4c)" * (cast_expression "(undefined4 *)(puVar37 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x4c)" ( (binary_expression "puVar37 + -0x4c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "needle_00 = pwc;" (assignment_expression "needle_00 = pwc" identifier = identifier) ;) (expression_statement "uVar6 = (*pcVar40)(pwc);" (assignment_expression "uVar6 = (*pcVar40)(pwc)" identifier = (call_expression "(*pcVar40)(pwc)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(pwc)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "pmVar42 = (mbstate_t *)((ulonglong)uVar6 * 0x2c >> 0x20);" (assignment_expression "pmVar42 = (mbstate_t *)((ulonglong)uVar6 * 0x2c >> 0x20)" identifier = (cast_expression "(mbstate_t *)((ulonglong)uVar6 * 0x2c >> 0x20)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar6 * 0x2c >> 0x20)" ( (binary_expression "(ulonglong)uVar6 * 0x2c >> 0x20" (binary_expression "(ulonglong)uVar6 * 0x2c" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * number_literal) >> number_literal) )))) ;) (expression_statement "*(uint *)(puVar37 + -0x104) = uVar6;" (assignment_expression "*(uint *)(puVar37 + -0x104) = uVar6" (pointer_expression "*(uint *)(puVar37 + -0x104)" * (cast_expression "(uint *)(puVar37 + -0x104)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar39 = puVar37 + -0x128;" (assignment_expression "puVar39 = puVar37 + -0x128" identifier = (binary_expression "puVar37 + -0x128" identifier + number_literal)) ;) (if_statement "if ((-1 < (int)((ulonglong)uVar6 * 0x2c)) &&\n     (pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0)) {\n    if ((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1) {\n      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar38 = puVar37 + iVar10 + -0x128;\n      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);\n    }\n    else {\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }\n    pmVar27 = pmVar42;\n    puVar39 = puVar38;\n    if ((mbstate_t *)haystack != (mbstate_t *)0x0) {\n      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);\n      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n      *(undefined4 *)(puVar37 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar37 + -0xec) = 0;\n      *(undefined4 *)(puVar37 + -0x100) = uVar18;\n      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);\n      *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      puVar37[-0xf4] = 0;\n      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);\n      puVar37[-0xe8] = 0;\n      *(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);\n      unaff_s4 = (mbstate_t *)haystack;\n      do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );\n    }\n  }" if (parenthesized_expression "((-1 < (int)((ulonglong)uVar6 * 0x2c)) &&\n     (pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0))" ( (binary_expression "(-1 < (int)((ulonglong)uVar6 * 0x2c)) &&\n     (pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0)" (parenthesized_expression "(-1 < (int)((ulonglong)uVar6 * 0x2c))" ( (binary_expression "-1 < (int)((ulonglong)uVar6 * 0x2c)" number_literal < (cast_expression "(int)((ulonglong)uVar6 * 0x2c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar6 * 0x2c)" ( (binary_expression "(ulonglong)uVar6 * 0x2c" (cast_expression "(ulonglong)uVar6" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * number_literal) )))) )) && (parenthesized_expression "(pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0)" ( (comma_expression "pmVar27 = pmVar42, puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0" (assignment_expression "pmVar27 = pmVar42" identifier = identifier) , (comma_expression "puVar39 = puVar37 + -0x128, pmVar42 == (mbstate_t *)0x0" (assignment_expression "puVar39 = puVar37 + -0x128" identifier = (binary_expression "puVar37 + -0x128" identifier + number_literal)) , (binary_expression "pmVar42 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n    if ((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1) {\n      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar38 = puVar37 + iVar10 + -0x128;\n      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);\n    }\n    else {\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }\n    pmVar27 = pmVar42;\n    puVar39 = puVar38;\n    if ((mbstate_t *)haystack != (mbstate_t *)0x0) {\n      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);\n      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n      *(undefined4 *)(puVar37 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar37 + -0xec) = 0;\n      *(undefined4 *)(puVar37 + -0x100) = uVar18;\n      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);\n      *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      puVar37[-0xf4] = 0;\n      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);\n      puVar37[-0xe8] = 0;\n      *(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);\n      unaff_s4 = (mbstate_t *)haystack;\n      do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );\n    }\n  }" { (if_statement "if ((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1) {\n      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar38 = puVar37 + iVar10 + -0x128;\n      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);\n    }\n    else {\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }" if (parenthesized_expression "((uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1)" ( (binary_expression "(uint)(*(int *)(puVar37 + -0x104) * 0x2c) < 0xfb1" (call_expression "(uint)(*(int *)(puVar37 + -0x104) * 0x2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar37 + -0x104) * 0x2c)" ( (binary_expression "*(int *)(puVar37 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar37 + -0x104)" * (cast_expression "(int *)(puVar37 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) )))) * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar38 = puVar37 + iVar10 + -0x128;\n      haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);\n    }" { (expression_statement "iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8);" (assignment_expression "iVar10 = -(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" identifier = (unary_expression "-(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" - (parenthesized_expression "(*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" ( (binary_expression "*(int *)(puVar37 + -0x104) * 0x2c + 0x16U & 0xfffffff8" (binary_expression "*(int *)(puVar37 + -0x104) * 0x2c + 0x16U" (binary_expression "*(int *)(puVar37 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar37 + -0x104)" * (cast_expression "(int *)(puVar37 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) )))) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar38 = puVar37 + iVar10 + -0x128;" (assignment_expression "puVar38 = puVar37 + iVar10 + -0x128" identifier = (binary_expression "puVar37 + iVar10 + -0x128" (binary_expression "puVar37 + iVar10" identifier + identifier) + number_literal)) ;) (expression_statement "haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0);" (assignment_expression "haystack = (uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0)" identifier = (cast_expression "(uchar *)((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0)" ( (binary_expression "(uint)(puVar37 + iVar10 + -0x109) & 0xfffffff0" (call_expression "(uint)(puVar37 + iVar10 + -0x109)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar37 + iVar10 + -0x109)" ( (binary_expression "puVar37 + iVar10 + -0x109" (binary_expression "puVar37 + iVar10" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) }) (else_clause "else {\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }" else (compound_statement "{\n      haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();\n      iVar17 = *(int *)(puVar37 + -0x118);\n    }" { (expression_statement "haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))();" (assignment_expression "haystack = (uchar *)(**(code **)(iVar17 + -0x7ca4))()" identifier = (cast_expression "(uchar *)(**(code **)(iVar17 + -0x7ca4))()" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar17 + -0x7ca4))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7ca4))" ( (pointer_expression "**(code **)(iVar17 + -0x7ca4)" * (pointer_expression "*(code **)(iVar17 + -0x7ca4)" * (cast_expression "(code **)(iVar17 + -0x7ca4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7ca4)" ( (binary_expression "iVar17 + -0x7ca4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) }))) (expression_statement "pmVar27 = pmVar42;" (assignment_expression "pmVar27 = pmVar42" identifier = identifier) ;) (expression_statement "puVar39 = puVar38;" (assignment_expression "puVar39 = puVar38" identifier = identifier) ;) (if_statement "if ((mbstate_t *)haystack != (mbstate_t *)0x0) {\n      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);\n      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n      *(undefined4 *)(puVar37 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar37 + -0xec) = 0;\n      *(undefined4 *)(puVar37 + -0x100) = uVar18;\n      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);\n      *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      puVar37[-0xf4] = 0;\n      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);\n      puVar37[-0xe8] = 0;\n      *(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);\n      unaff_s4 = (mbstate_t *)haystack;\n      do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );\n    }" if (parenthesized_expression "((mbstate_t *)haystack != (mbstate_t *)0x0)" ( (binary_expression "(mbstate_t *)haystack != (mbstate_t *)0x0" (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);\n      uVar18 = *(undefined4 *)(iVar17 + -0x7c98);\n      *(undefined4 *)(puVar37 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar37 + -0xec) = 0;\n      *(undefined4 *)(puVar37 + -0x100) = uVar18;\n      unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);\n      *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      puVar37[-0xf4] = 0;\n      unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);\n      puVar37[-0xe8] = 0;\n      *(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);\n      unaff_s4 = (mbstate_t *)haystack;\n      do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );\n    }" { (expression_statement "unaff_s3 = (mbstate_t *)(puVar37 + -0xf0);" (assignment_expression "unaff_s3 = (mbstate_t *)(puVar37 + -0xf0)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0xf0)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xf0)" ( (binary_expression "puVar37 + -0xf0" identifier + number_literal) )))) ;) (expression_statement "uVar18 = *(undefined4 *)(iVar17 + -0x7c98);" (assignment_expression "uVar18 = *(undefined4 *)(iVar17 + -0x7c98)" identifier = (pointer_expression "*(undefined4 *)(iVar17 + -0x7c98)" * (cast_expression "(undefined4 *)(iVar17 + -0x7c98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7c98)" ( (binary_expression "iVar17 + -0x7c98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar37 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar37 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar37 + -0xf0)" * (cast_expression "(undefined4 *)(puVar37 + -0xf0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xf0)" ( (binary_expression "puVar37 + -0xf0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "unaff_s2 = 1;" (assignment_expression "unaff_s2 = 1" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar37 + -0xec) = 0;" (assignment_expression "*(undefined4 *)(puVar37 + -0xec) = 0" (pointer_expression "*(undefined4 *)(puVar37 + -0xec)" * (cast_expression "(undefined4 *)(puVar37 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xec)" ( (binary_expression "puVar37 + -0xec" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x100) = uVar18;" (assignment_expression "*(undefined4 *)(puVar37 + -0x100) = uVar18" (pointer_expression "*(undefined4 *)(puVar37 + -0x100)" * (cast_expression "(undefined4 *)(puVar37 + -0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x100)" ( (binary_expression "puVar37 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s6 = (mbstate_t *)(puVar37 + -0xd8);" (assignment_expression "unaff_s6 = (mbstate_t *)(puVar37 + -0xd8)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0xd8)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xd8)" ( (binary_expression "puVar37 + -0xd8" identifier + number_literal) )))) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0xe4) = pwc;" (assignment_expression "*(mbstate_t **)(puVar37 + -0xe4) = pwc" (pointer_expression "*(mbstate_t **)(puVar37 + -0xe4)" * (cast_expression "(mbstate_t **)(puVar37 + -0xe4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xe4)" ( (binary_expression "puVar37 + -0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar37[-0xf4] = 0;" (assignment_expression "puVar37[-0xf4] = 0" (subscript_expression "puVar37[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s5 = (mbstate_t *)(puVar37 + -0xd4);" (assignment_expression "unaff_s5 = (mbstate_t *)(puVar37 + -0xd4)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0xd4)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xd4)" ( (binary_expression "puVar37 + -0xd4" identifier + number_literal) )))) ;) (expression_statement "pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28);" (assignment_expression "pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28)" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar37 + -0x104) * 0x28)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0x104) * 0x28)" ( (binary_expression "*(int *)(puVar37 + -0x104) * 0x28" (pointer_expression "*(int *)(puVar37 + -0x104)" * (cast_expression "(int *)(puVar37 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) )))) * number_literal) )))) ;) (expression_statement "puVar37[-0xe8] = 0;" (assignment_expression "puVar37[-0xe8] = 0" (subscript_expression "puVar37[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8);" (assignment_expression "*(mbstate_t **)(puVar37 + -0xfc) =\n           (mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8)" (pointer_expression "*(mbstate_t **)(puVar37 + -0xfc)" * (cast_expression "(mbstate_t **)(puVar37 + -0xfc)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) )))) = (cast_expression "(mbstate_t *)((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8)" ( (binary_expression "(int)haystack + *(int *)(puVar37 + -0x104) * 5 * 8" (cast_expression "(int)haystack" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "*(int *)(puVar37 + -0x104) * 5 * 8" (binary_expression "*(int *)(puVar37 + -0x104) * 5" (pointer_expression "*(int *)(puVar37 + -0x104)" * (cast_expression "(int *)(puVar37 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) )))) * number_literal) * number_literal)) )))) ;) (expression_statement "unaff_s4 = (mbstate_t *)haystack;" (assignment_expression "unaff_s4 = (mbstate_t *)haystack" identifier = (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      } while( true );" do (compound_statement "{\n        if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }\n        needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;\n        if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }\n        *(undefined4 *)(puVar37 + -0xe0) = 1;\n        pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;\n        puVar37[-0xdc] = 1;\n        puVar37[-0xe8] = 1;\n        *(mbstate_t **)(puVar37 + -0xd8) = pmVar32;\n        if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }\n        uVar23 = '\x01';\n        pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n        if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }\n        (unaff_s4->__value).__wch = (uint)pmVar42;\n        *(uchar *)&unaff_s4[1].__count = uVar23;\n        if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 5;\n        puVar37[-0xe8] = 0;\n        pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));\n        *(mbstate_t **)(puVar37 + -0xe4) = pwc;\n      }" { (if_statement "if (puVar37[-0xf4] != '\0') {\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }" if (parenthesized_expression "(puVar37[-0xf4] != '\0')" ( (binary_expression "puVar37[-0xf4] != '\0'" (subscript_expression "puVar37[-0xf4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();\n          sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n          rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);\n        }" { (labeled_statement "LAB_0002d840:\n          sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pwc,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pwc,sVar7)" identifier = (call_expression "strnlen1((char *)pwc,sVar7)" identifier (argument_list "((char *)pwc,sVar7)" ( (cast_expression "(char *)pwc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3);" (call_expression "rpl_mbrtowc((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3)" identifier (argument_list "((wchar_t *)unaff_s6,(char *)pwc,sVar7,unaff_s3)" ( (cast_expression "(wchar_t *)unaff_s6" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)pwc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) })) (expression_statement "needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count;" (assignment_expression "needle_00 = (mbstate_t *)(uint)*(byte *)&pwc->__count" identifier = (binary_expression "(mbstate_t *)(uint)*(byte *)&pwc->__count" (cast_expression "(mbstate_t *)(uint)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)&pwc->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0) {\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n             ((uint)needle_00 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4" (pointer_expression "*(int *)(puVar37 + -0x100)" * (cast_expression "(int *)(puVar37 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x100)" ( (binary_expression "puVar37 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pwc->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pwc->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pwc->__count >> 5)" ( (binary_expression "*(byte *)&pwc->__count >> 5" (pointer_expression "*(byte *)&pwc->__count" * (cast_expression "(byte *)&pwc->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)needle_00 & 0x1f)" ( (binary_expression "(uint)needle_00 & 0x1f" (cast_expression "(uint)needle_00" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          if (iVar10 == 0) goto LAB_0002e0bc;\n          puVar37[-0xf4] = 1;\n          goto LAB_0002d840;\n        }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s3)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(unaff_s3)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s3)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) goto LAB_0002e0bc;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;)) (expression_statement "puVar37[-0xf4] = 1;" (assignment_expression "puVar37[-0xf4] = 1" (subscript_expression "puVar37[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d840;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar37 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar37 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar37 + -0xe0)" * (cast_expression "(undefined4 *)(puVar37 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xe0)" ( (binary_expression "puVar37 + -0xe0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count;" (assignment_expression "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pwc->__count" identifier = (cast_expression "(mbstate_t *)(int)(char)*(uchar *)&pwc->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*(uchar *)&pwc->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&pwc->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&pwc->__count" * (cast_expression "(uchar *)&pwc->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier)))))))) ;) (expression_statement "puVar37[-0xdc] = 1;" (assignment_expression "puVar37[-0xdc] = 1" (subscript_expression "puVar37[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37[-0xe8] = 1;" (assignment_expression "puVar37[-0xe8] = 1" (subscript_expression "puVar37[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0xd8) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar37 + -0xd8) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar37 + -0xd8)" * (cast_expression "(mbstate_t **)(puVar37 + -0xd8)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xd8)" ( (binary_expression "puVar37 + -0xd8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pmVar32 == (mbstate_t *)0x0) {\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }" if (parenthesized_expression "(pmVar32 == (mbstate_t *)0x0)" ( (binary_expression "pmVar32 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar6 = *(uint *)(puVar37 + -0x104);\n          *(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;\n          if (uVar6 < 3) goto LAB_0002d988;\n          iVar10 = 0;\n          pwc = (mbstate_t *)0x2;\n          pmVar27 = (mbstate_t *)haystack;\n          goto FUN_0002d8f0;\n        }" { (expression_statement "uVar6 = *(uint *)(puVar37 + -0x104);" (assignment_expression "uVar6 = *(uint *)(puVar37 + -0x104)" identifier = (pointer_expression "*(uint *)(puVar37 + -0x104)" * (cast_expression "(uint *)(puVar37 + -0x104)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1;" (assignment_expression "*(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4) = 1" (pointer_expression "*(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4)" * (cast_expression "(undefined4 *)(*(int *)(puVar37 + -0xfc) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0xfc) + 4)" ( (binary_expression "*(int *)(puVar37 + -0xfc) + 4" (pointer_expression "*(int *)(puVar37 + -0xfc)" * (cast_expression "(int *)(puVar37 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (if_statement "if (uVar6 < 3) goto LAB_0002d988;" if (parenthesized_expression "(uVar6 < 3)" ( (binary_expression "uVar6 < 3" identifier < number_literal) )) (goto_statement "goto LAB_0002d988;" goto statement_identifier ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "pwc = (mbstate_t *)0x2;" (assignment_expression "pwc = (mbstate_t *)0x2" identifier = (cast_expression "(mbstate_t *)0x2" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pmVar27 = (mbstate_t *)haystack;" (assignment_expression "pmVar27 = (mbstate_t *)haystack" identifier = (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto FUN_0002d8f0;" goto statement_identifier ;) })) (expression_statement "uVar23 = '\x01';" (assignment_expression "uVar23 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);" (assignment_expression "pmVar42 = *(mbstate_t **)(puVar37 + -0xe0)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0xe0)" * (cast_expression "(mbstate_t **)(puVar37 + -0xe0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xe0)" ( (binary_expression "puVar37 + -0xe0" identifier + number_literal) ))))) ;) (if_statement "if (*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5) {\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }\n        else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }" if (parenthesized_expression "(*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5)" ( (binary_expression "*(mbstate_t **)(puVar37 + -0xe4) == unaff_s5" (pointer_expression "*(mbstate_t **)(puVar37 + -0xe4)" * (cast_expression "(mbstate_t **)(puVar37 + -0xe4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xe4)" ( (binary_expression "puVar37 + -0xe4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);\n          iVar17 = *(int *)(puVar37 + -0x118);\n          uVar23 = puVar37[-0xdc];\n          pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);\n          unaff_s4->__count = iVar10;\n        }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5)" identifier = (call_expression "(**(code **)(iVar17 + -0x7990))(unaff_s4 + 2,unaff_s5)" (parenthesized_expression "(**(code **)(iVar17 + -0x7990))" ( (pointer_expression "**(code **)(iVar17 + -0x7990)" * (pointer_expression "*(code **)(iVar17 + -0x7990)" * (cast_expression "(code **)(iVar17 + -0x7990)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7990)" ( (binary_expression "iVar17 + -0x7990" identifier + number_literal) ))))) )) (argument_list "(unaff_s4 + 2,unaff_s5)" ( (binary_expression "unaff_s4 + 2" identifier + number_literal) , identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "uVar23 = puVar37[-0xdc];" (assignment_expression "uVar23 = puVar37[-0xdc]" identifier = (subscript_expression "puVar37[-0xdc]" identifier [ number_literal ])) ;) (expression_statement "pmVar42 = *(mbstate_t **)(puVar37 + -0xe0);" (assignment_expression "pmVar42 = *(mbstate_t **)(puVar37 + -0xe0)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0xe0)" * (cast_expression "(mbstate_t **)(puVar37 + -0xe0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xe0)" ( (binary_expression "puVar37 + -0xe0" identifier + number_literal) ))))) ;) (expression_statement "unaff_s4->__count = iVar10;" (assignment_expression "unaff_s4->__count = iVar10" (field_expression "unaff_s4->__count" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }" else (compound_statement "{\n          unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);\n        }" { (expression_statement "unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4);" (assignment_expression "unaff_s4->__count = (int)*(mbstate_t **)(puVar37 + -0xe4)" (field_expression "unaff_s4->__count" identifier -> field_identifier) = (cast_expression "(int)*(mbstate_t **)(puVar37 + -0xe4)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(mbstate_t **)(puVar37 + -0xe4)" * (cast_expression "(mbstate_t **)(puVar37 + -0xe4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xe4)" ( (binary_expression "puVar37 + -0xe4" identifier + number_literal) )))))) ;) }))) (expression_statement "(unaff_s4->__value).__wch = (uint)pmVar42;" (assignment_expression "(unaff_s4->__value).__wch = (uint)pmVar42" (field_expression "(unaff_s4->__value).__wch" (parenthesized_expression "(unaff_s4->__value)" ( (field_expression "unaff_s4->__value" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(uint)pmVar42" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(uchar *)&unaff_s4[1].__count = uVar23;" (assignment_expression "*(uchar *)&unaff_s4[1].__count = uVar23" (pointer_expression "*(uchar *)&unaff_s4[1].__count" * (cast_expression "(uchar *)&unaff_s4[1].__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s4[1].__count" & (field_expression "unaff_s4[1].__count" (subscript_expression "unaff_s4[1]" identifier [ number_literal ]) . field_identifier)))) = identifier) ;) (if_statement "if (uVar23 != '\0') {\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }" if (parenthesized_expression "(uVar23 != '\0')" ( (binary_expression "uVar23 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);\n        }" { (expression_statement "unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8);" (assignment_expression "unaff_s4[1].__value = *(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8)" (field_expression "unaff_s4[1].__value" (subscript_expression "unaff_s4[1]" identifier [ number_literal ]) . field_identifier) = (pointer_expression "*(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8)" * (cast_expression "(anon_union_4_2_91654ee9_for___value *)(puVar37 + -0xd8)" ( (type_descriptor "anon_union_4_2_91654ee9_for___value *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xd8)" ( (binary_expression "puVar37 + -0xd8" identifier + number_literal) ))))) ;) })) (expression_statement "unaff_s4 = unaff_s4 + 5;" (assignment_expression "unaff_s4 = unaff_s4 + 5" identifier = (binary_expression "unaff_s4 + 5" identifier + number_literal)) ;) (expression_statement "puVar37[-0xe8] = 0;" (assignment_expression "puVar37[-0xe8] = 0" (subscript_expression "puVar37[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4));" (assignment_expression "pwc = (mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4))" identifier = (cast_expression "(mbstate_t *)((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4))" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pmVar42->__count + *(int *)(puVar37 + -0xe4))" ( (binary_expression "(int)&pmVar42->__count + *(int *)(puVar37 + -0xe4)" (cast_expression "(int)&pmVar42->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pmVar42->__count" & (field_expression "pmVar42->__count" identifier -> field_identifier))) + (pointer_expression "*(int *)(puVar37 + -0xe4)" * (cast_expression "(int *)(puVar37 + -0xe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xe4)" ( (binary_expression "puVar37 + -0xe4" identifier + number_literal) ))))) )))) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0xe4) = pwc;" (assignment_expression "*(mbstate_t **)(puVar37 + -0xe4) = pwc" (pointer_expression "*(mbstate_t **)(puVar37 + -0xe4)" * (cast_expression "(mbstate_t **)(puVar37 + -0xe4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xe4)" ( (binary_expression "puVar37 + -0xe4" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "_Var15 = false;" (assignment_expression "_Var15 = false" identifier = false) ;) (labeled_statement "LAB_0002db5c:\n  pmVar42 = *(mbstate_t **)(puVar37 + -0x4c);" statement_identifier : (expression_statement "pmVar42 = *(mbstate_t **)(puVar37 + -0x4c);" (assignment_expression "pmVar42 = *(mbstate_t **)(puVar37 + -0x4c)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0x4c)" * (cast_expression "(mbstate_t **)(puVar37 + -0x4c)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x4c)" ( (binary_expression "puVar37 + -0x4c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar36 = *(code **)(iVar17 + -0x79d8);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar17 + -0x79d8)" * (cast_expression "(code **)(iVar17 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x79d8)" ( (binary_expression "iVar17 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar39;" (assignment_expression "puVar38 = puVar39" identifier = identifier) ;) (if_statement "if (pmVar42 == (mbstate_t *)**(undefined4 **)(puVar37 + -0x10c)) {\n    return _Var15;\n  }" if (parenthesized_expression "(pmVar42 == (mbstate_t *)**(undefined4 **)(puVar37 + -0x10c))" ( (binary_expression "pmVar42 == (mbstate_t *)**(undefined4 **)(puVar37 + -0x10c)" identifier == (cast_expression "(mbstate_t *)**(undefined4 **)(puVar37 + -0x10c)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar37 + -0x10c)" * (pointer_expression "*(undefined4 **)(puVar37 + -0x10c)" * (cast_expression "(undefined4 **)(puVar37 + -0x10c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x10c)" ( (binary_expression "puVar37 + -0x10c" identifier + number_literal) ))))))) )) (compound_statement "{\n    return _Var15;\n  }" { (return_statement "return _Var15;" return identifier ;) })) (goto_statement "goto LAB_0002e0e0;" goto statement_identifier ;) (labeled_statement "FUN_0002d8f0:\n  pmVar32 = (mbstate_t *)(uint)*(byte *)&pmVar27[6].__count;" statement_identifier : (expression_statement "pmVar32 = (mbstate_t *)(uint)*(byte *)&pmVar27[6].__count;" (assignment_expression "pmVar32 = (mbstate_t *)(uint)*(byte *)&pmVar27[6].__count" identifier = (binary_expression "(mbstate_t *)(uint)*(byte *)&pmVar27[6].__count" (cast_expression "(mbstate_t *)(uint)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)&pmVar27[6].__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar27[6].__count" & (field_expression "pmVar27[6].__count" (subscript_expression "pmVar27[6]" identifier [ number_literal ]) . field_identifier))))) ;)) (do_statement "do {\n    pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8);\n    if ((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')) {\n      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;\n      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4);\n  } while( true );" do (compound_statement "{\n    pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8);\n    if ((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')) {\n      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;\n      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar10 == 0) break;\n    iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4);\n  }" { (expression_statement "pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8);" (assignment_expression "pmVar26 = (mbstate_t *)((int)haystack + iVar10 * 5 * 8)" identifier = (cast_expression "(mbstate_t *)((int)haystack + iVar10 * 5 * 8)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)haystack + iVar10 * 5 * 8)" ( (binary_expression "(int)haystack + iVar10 * 5 * 8" (cast_expression "(int)haystack" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar10 * 5 * 8" (binary_expression "iVar10 * 5" identifier * number_literal) * number_literal)) )))) ;) (if_statement "if ((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')) {\n      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;\n      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }" if (parenthesized_expression "((pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0'))" ( (binary_expression "(pmVar32 == (mbstate_t *)0x0) || (*(uchar *)&pmVar26[1].__count == '\0')" (parenthesized_expression "(pmVar32 == (mbstate_t *)0x0)" ( (binary_expression "pmVar32 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*(uchar *)&pmVar26[1].__count == '\0')" ( (binary_expression "*(uchar *)&pmVar26[1].__count == '\0'" (pointer_expression "*(uchar *)&pmVar26[1].__count" * (cast_expression "(uchar *)&pmVar26[1].__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar26[1].__count" & (field_expression "pmVar26[1].__count" (subscript_expression "pmVar26[1]" identifier [ number_literal ]) . field_identifier)))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;\n      if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }" { (expression_statement "pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch;" (assignment_expression "pmVar42 = (mbstate_t *)pmVar27[5].__value.__wch" identifier = (cast_expression "(mbstate_t *)pmVar27[5].__value.__wch" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pmVar27[5].__value.__wch" (field_expression "pmVar27[5].__value" (subscript_expression "pmVar27[5]" identifier [ number_literal ]) . field_identifier) . field_identifier))) ;) (if_statement "if (pmVar42 == (mbstate_t *)(pmVar26->__value).__wch) {\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" if (parenthesized_expression "(pmVar42 == (mbstate_t *)(pmVar26->__value).__wch)" ( (binary_expression "pmVar42 == (mbstate_t *)(pmVar26->__value).__wch" identifier == (cast_expression "(mbstate_t *)(pmVar26->__value).__wch" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pmVar26->__value).__wch" (parenthesized_expression "(pmVar26->__value)" ( (field_expression "pmVar26->__value" identifier -> field_identifier) )) . field_identifier))) )) (compound_statement "{\n        needle_00 = (mbstate_t *)pmVar26->__count;\n        iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);\n        iVar17 = *(int *)(puVar37 + -0x118);\n        if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" { (expression_statement "needle_00 = (mbstate_t *)pmVar26->__count;" (assignment_expression "needle_00 = (mbstate_t *)pmVar26->__count" identifier = (cast_expression "(mbstate_t *)pmVar26->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pmVar26->__count" identifier -> field_identifier))) ;) (expression_statement "iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count);" (assignment_expression "iVar9 = (**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count)" identifier = (call_expression "(**(code **)(iVar17 + -0x79c0))(pmVar27[5].__count)" (parenthesized_expression "(**(code **)(iVar17 + -0x79c0))" ( (pointer_expression "**(code **)(iVar17 + -0x79c0)" * (pointer_expression "*(code **)(iVar17 + -0x79c0)" * (cast_expression "(code **)(iVar17 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x79c0)" ( (binary_expression "iVar17 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(pmVar27[5].__count)" ( (field_expression "pmVar27[5].__count" (subscript_expression "pmVar27[5]" identifier [ number_literal ]) . field_identifier) )))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar9 = *(int *)(puVar37 + -0xfc);\n          goto LAB_0002d964;\n        }" { (expression_statement "iVar9 = *(int *)(puVar37 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar37 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar37 + -0xfc)" * (cast_expression "(int *)(puVar37 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002d964;" goto statement_identifier ;) })) })) }) (else_clause "else {\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }" else (compound_statement "{\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }\n    }" { (expression_statement "iVar9 = *(int *)(puVar37 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar37 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar37 + -0xfc)" * (cast_expression "(int *)(puVar37 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) ))))) ;) (if_statement "if (pmVar27[6].__value.__wch == pmVar26[1].__value.__wch) {\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }" if (parenthesized_expression "(pmVar27[6].__value.__wch == pmVar26[1].__value.__wch)" ( (binary_expression "pmVar27[6].__value.__wch == pmVar26[1].__value.__wch" (field_expression "pmVar27[6].__value.__wch" (field_expression "pmVar27[6].__value" (subscript_expression "pmVar27[6]" identifier [ number_literal ]) . field_identifier) . field_identifier) == (field_expression "pmVar26[1].__value.__wch" (field_expression "pmVar26[1].__value" (subscript_expression "pmVar26[1]" identifier [ number_literal ]) . field_identifier) . field_identifier)) )) (compound_statement "{\nLAB_0002d964:\n        iVar10 = iVar10 + 1;\n        *(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;\n        goto LAB_0002d978;\n      }" { (labeled_statement "LAB_0002d964:\n        iVar10 = iVar10 + 1;" statement_identifier : (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;)) (expression_statement "*(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10;" (assignment_expression "*(int *)(iVar9 + (int)pwc * 4) = (int)pwc - iVar10" (pointer_expression "*(int *)(iVar9 + (int)pwc * 4)" * (cast_expression "(int *)(iVar9 + (int)pwc * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (int)pwc * 4)" ( (binary_expression "iVar9 + (int)pwc * 4" identifier + (binary_expression "(int)pwc * 4" (cast_expression "(int)pwc" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = (binary_expression "(int)pwc - iVar10" (cast_expression "(int)pwc" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (goto_statement "goto LAB_0002d978;" goto statement_identifier ;) })) }))) (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4);" (assignment_expression "iVar10 = iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4)" identifier = (binary_expression "iVar10 - *(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4)" identifier - (pointer_expression "*(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4)" * (cast_expression "(int *)(*(int *)(puVar37 + -0xfc) + iVar10 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0xfc) + iVar10 * 4)" ( (binary_expression "*(int *)(puVar37 + -0xfc) + iVar10 * 4" (pointer_expression "*(int *)(puVar37 + -0xfc)" * (cast_expression "(int *)(puVar37 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) )))) + (binary_expression "iVar10 * 4" identifier * number_literal)) )))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (expression_statement "*(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4) = pwc;" (assignment_expression "*(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4) = pwc" (pointer_expression "*(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4)" * (cast_expression "(mbstate_t **)(*(int *)(puVar37 + -0xfc) + (int)pwc * 4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar37 + -0xfc) + (int)pwc * 4)" ( (binary_expression "*(int *)(puVar37 + -0xfc) + (int)pwc * 4" (pointer_expression "*(int *)(puVar37 + -0xfc)" * (cast_expression "(int *)(puVar37 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) )))) + (binary_expression "(int)pwc * 4" (cast_expression "(int)pwc" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = identifier) ;) (labeled_statement "LAB_0002d978:\n  pwc = (mbstate_t *)((int)&pwc->__count + 1);" statement_identifier : (expression_statement "pwc = (mbstate_t *)((int)&pwc->__count + 1);" (assignment_expression "pwc = (mbstate_t *)((int)&pwc->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&pwc->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pwc->__count + 1)" ( (binary_expression "(int)&pwc->__count + 1" (cast_expression "(int)&pwc->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier))) + number_literal) )))) ;)) (expression_statement "pmVar27 = pmVar27 + 5;" (assignment_expression "pmVar27 = pmVar27 + 5" identifier = (binary_expression "pmVar27 + 5" identifier + number_literal)) ;) (if_statement "if (*(mbstate_t **)(puVar37 + -0x104) == pwc) goto LAB_0002d988;" if (parenthesized_expression "(*(mbstate_t **)(puVar37 + -0x104) == pwc)" ( (binary_expression "*(mbstate_t **)(puVar37 + -0x104) == pwc" (pointer_expression "*(mbstate_t **)(puVar37 + -0x104)" * (cast_expression "(mbstate_t **)(puVar37 + -0x104)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_0002d988;" goto statement_identifier ;)) (goto_statement "goto FUN_0002d8f0;" goto statement_identifier ;) (labeled_statement "LAB_0002d988:\n  uVar18 = *(undefined4 *)(iVar17 + -0x7c98);" statement_identifier : (expression_statement "uVar18 = *(undefined4 *)(iVar17 + -0x7c98);" (assignment_expression "uVar18 = *(undefined4 *)(iVar17 + -0x7c98)" identifier = (pointer_expression "*(undefined4 *)(iVar17 + -0x7c98)" * (cast_expression "(undefined4 *)(iVar17 + -0x7c98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7c98)" ( (binary_expression "iVar17 + -0x7c98" identifier + number_literal) ))))) ;)) (expression_statement "unaff_s4 = (mbstate_t *)(puVar37 + -0xb8);" (assignment_expression "unaff_s4 = (mbstate_t *)(puVar37 + -0xb8)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0xb8)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xb8)" ( (binary_expression "puVar37 + -0xb8" identifier + number_literal) )))) ;) (expression_statement "uVar19 = *(undefined4 *)(puVar37 + -0x108);" (assignment_expression "uVar19 = *(undefined4 *)(puVar37 + -0x108)" identifier = (pointer_expression "*(undefined4 *)(puVar37 + -0x108)" * (cast_expression "(undefined4 *)(puVar37 + -0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x108)" ( (binary_expression "puVar37 + -0x108" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (mbstate_t *)(puVar37 + -0x80);" (assignment_expression "unaff_s6 = (mbstate_t *)(puVar37 + -0x80)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0x80)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x80)" ( (binary_expression "puVar37 + -0x80" identifier + number_literal) )))) ;) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar37 + -0xb8) = 0;" (assignment_expression "*(undefined4 *)(puVar37 + -0xb8) = 0" (pointer_expression "*(undefined4 *)(puVar37 + -0xb8)" * (cast_expression "(undefined4 *)(puVar37 + -0xb8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xb8)" ( (binary_expression "puVar37 + -0xb8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x100) = uVar18;" (assignment_expression "*(undefined4 *)(puVar37 + -0x100) = uVar18" (pointer_expression "*(undefined4 *)(puVar37 + -0x100)" * (cast_expression "(undefined4 *)(puVar37 + -0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x100)" ( (binary_expression "puVar37 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s3 = (mbstate_t *)(puVar37 + -0x68);" (assignment_expression "unaff_s3 = (mbstate_t *)(puVar37 + -0x68)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0x68)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x68)" ( (binary_expression "puVar37 + -0x68" identifier + number_literal) )))) ;) (expression_statement "unaff_s5 = (mbstate_t *)(puVar37 + -0xa0);" (assignment_expression "unaff_s5 = (mbstate_t *)(puVar37 + -0xa0)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0xa0)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xa0)" ( (binary_expression "puVar37 + -0xa0" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(puVar37 + -0xb4) = 0;" (assignment_expression "*(undefined4 *)(puVar37 + -0xb4) = 0" (pointer_expression "*(undefined4 *)(puVar37 + -0xb4)" * (cast_expression "(undefined4 *)(puVar37 + -0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xb4)" ( (binary_expression "puVar37 + -0xb4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar37 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar37 + -0x80)" * (cast_expression "(undefined4 *)(puVar37 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x80)" ( (binary_expression "puVar37 + -0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar37 + -0xac) = uVar19;" (assignment_expression "*(undefined4 *)(puVar37 + -0xac) = uVar19" (pointer_expression "*(undefined4 *)(puVar37 + -0xac)" * (cast_expression "(undefined4 *)(puVar37 + -0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "**(undefined4 **)(puVar37 + -0x110) = 0;" (assignment_expression "**(undefined4 **)(puVar37 + -0x110) = 0" (pointer_expression "**(undefined4 **)(puVar37 + -0x110)" * (pointer_expression "*(undefined4 **)(puVar37 + -0x110)" * (cast_expression "(undefined4 **)(puVar37 + -0x110)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x110)" ( (binary_expression "puVar37 + -0x110" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "cVar14 = '\0';" (assignment_expression "cVar14 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x7c) = 0;" (assignment_expression "*(undefined4 *)(puVar37 + -0x7c) = 0" (pointer_expression "*(undefined4 *)(puVar37 + -0x7c)" * (cast_expression "(undefined4 *)(puVar37 + -0x7c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x7c)" ( (binary_expression "puVar37 + -0x7c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar37[-0xbc] = 0;" (assignment_expression "puVar37[-0xbc] = 0" (subscript_expression "puVar37[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37[-0xb0] = 0;" (assignment_expression "puVar37[-0xb0] = 0" (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar37 + -0x74) = uVar19;" (assignment_expression "*(undefined4 *)(puVar37 + -0x74) = uVar19" (pointer_expression "*(undefined4 *)(puVar37 + -0x74)" * (cast_expression "(undefined4 *)(puVar37 + -0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x74)" ( (binary_expression "puVar37 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar37[-0x84] = 0;" (assignment_expression "puVar37[-0x84] = 0" (subscript_expression "puVar37[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37[-0x78] = 0;" (assignment_expression "puVar37[-0x78] = 0" (subscript_expression "puVar37[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pmVar27 = pmVar42;" (assignment_expression "pmVar27 = pmVar42" identifier = identifier) ;) (labeled_statement "joined_r0x0002d9dc:\n  do {\n    if (cVar14 == '\0') {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }\n    uVar6 = *(uint *)(puVar37 + -0x68);\n    if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;\n    iVar10 = unaff_s2 * 4;\n    pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\nLAB_0002da00:\n    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n    pmVar27 = pmVar32;\n    if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }\n    pwc = *(mbstate_t **)(iVar9 + iVar10);\n    *(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;\n    if (pwc == (mbstate_t *)0x0) {\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }\n    if (puVar37[-0xb0] == '\0') {\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }\n    pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n    if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;\n    while( true ) {\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }\n    cVar14 = puVar37[-0x78];\n    unaff_s2 = *(int *)(puVar37 + -0x108);\n  } while( true );" statement_identifier : (do_statement "do {\n    if (cVar14 == '\0') {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }\n    uVar6 = *(uint *)(puVar37 + -0x68);\n    if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;\n    iVar10 = unaff_s2 * 4;\n    pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\nLAB_0002da00:\n    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n    pmVar27 = pmVar32;\n    if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }\n    pwc = *(mbstate_t **)(iVar9 + iVar10);\n    *(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;\n    if (pwc == (mbstate_t *)0x0) {\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }\n    if (puVar37[-0xb0] == '\0') {\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }\n    pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n    if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;\n    while( true ) {\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }\n    cVar14 = puVar37[-0x78];\n    unaff_s2 = *(int *)(puVar37 + -0x108);\n  } while( true );" do (compound_statement "{\n    if (cVar14 == '\0') {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }\n    uVar6 = *(uint *)(puVar37 + -0x68);\n    if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;\n    iVar10 = unaff_s2 * 4;\n    pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\nLAB_0002da00:\n    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);\n    pmVar27 = pmVar32;\n    if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }\n    pwc = *(mbstate_t **)(iVar9 + iVar10);\n    *(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;\n    if (pwc == (mbstate_t *)0x0) {\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }\n    if (puVar37[-0xb0] == '\0') {\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }\n    pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n    if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;\n    while( true ) {\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }\n    cVar14 = puVar37[-0x78];\n    unaff_s2 = *(int *)(puVar37 + -0x108);\n  }" { (if_statement "if (cVar14 == '\0') {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      goto LAB_0002daa0;\n    }" { (expression_statement "pwc = *(mbstate_t **)(puVar37 + -0x74);" (assignment_expression "pwc = *(mbstate_t **)(puVar37 + -0x74)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0x74)" * (cast_expression "(mbstate_t **)(puVar37 + -0x74)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x74)" ( (binary_expression "puVar37 + -0x74" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002daa0;" goto statement_identifier ;) })) (expression_statement "uVar6 = *(uint *)(puVar37 + -0x68);" (assignment_expression "uVar6 = *(uint *)(puVar37 + -0x68)" identifier = (pointer_expression "*(uint *)(puVar37 + -0x68)" * (cast_expression "(uint *)(puVar37 + -0x68)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x68)" ( (binary_expression "puVar37 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (puVar37[-0x6c] != '\0') goto LAB_0002dae8;" if (parenthesized_expression "(puVar37[-0x6c] != '\0')" ( (binary_expression "puVar37[-0x6c] != '\0'" (subscript_expression "puVar37[-0x6c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002dae8;" goto statement_identifier ;)) (expression_statement "iVar10 = unaff_s2 * 4;" (assignment_expression "iVar10 = unaff_s2 * 4" identifier = (binary_expression "unaff_s2 * 4" identifier * number_literal)) ;) (expression_statement "pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);" (assignment_expression "pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8)" identifier = (cast_expression "(mbstate_t *)((int)haystack + unaff_s2 * 5 * 8)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)haystack + unaff_s2 * 5 * 8)" ( (binary_expression "(int)haystack + unaff_s2 * 5 * 8" (cast_expression "(int)haystack" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "unaff_s2 * 5 * 8" (binary_expression "unaff_s2 * 5" identifier * number_literal) * number_literal)) )))) ;) (labeled_statement "LAB_0002da00:\n    pmVar32 = *(mbstate_t **)(puVar37 + -0x70);" statement_identifier : (expression_statement "pmVar32 = *(mbstate_t **)(puVar37 + -0x70);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar37 + -0x70)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0x70)" * (cast_expression "(mbstate_t **)(puVar37 + -0x70)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x70)" ( (binary_expression "puVar37 + -0x70" identifier + number_literal) ))))) ;)) (expression_statement "pmVar27 = pmVar32;" (assignment_expression "pmVar27 = pmVar32" identifier = identifier) ;) (if_statement "if ((mbstate_t *)(pmVar42->__value).__wch == pmVar32) {\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }" if (parenthesized_expression "((mbstate_t *)(pmVar42->__value).__wch == pmVar32)" ( (binary_expression "(mbstate_t *)(pmVar42->__value).__wch == pmVar32" (cast_expression "(mbstate_t *)(pmVar42->__value).__wch" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pmVar42->__value).__wch" (parenthesized_expression "(pmVar42->__value)" ( (field_expression "pmVar42->__value" identifier -> field_identifier) )) . field_identifier)) == identifier) )) (compound_statement "{\n      pwc = *(mbstate_t **)(puVar37 + -0x74);\n      pcVar36 = *(code **)(iVar17 + -0x79c0);\n      iVar17 = pmVar42->__count;\n      *(int *)(puVar37 + -0x108) = iVar10;\n      needle_00 = pwc;\n      iVar9 = (*pcVar36)(iVar17);\n      iVar17 = *(int *)(puVar37 + -0x118);\n      iVar10 = *(int *)(puVar37 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar37[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar37 + -0xfc);\n    }" { (expression_statement "pwc = *(mbstate_t **)(puVar37 + -0x74);" (assignment_expression "pwc = *(mbstate_t **)(puVar37 + -0x74)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0x74)" * (cast_expression "(mbstate_t **)(puVar37 + -0x74)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x74)" ( (binary_expression "puVar37 + -0x74" identifier + number_literal) ))))) ;) (expression_statement "pcVar36 = *(code **)(iVar17 + -0x79c0);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x79c0)" identifier = (pointer_expression "*(code **)(iVar17 + -0x79c0)" * (cast_expression "(code **)(iVar17 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x79c0)" ( (binary_expression "iVar17 + -0x79c0" identifier + number_literal) ))))) ;) (expression_statement "iVar17 = pmVar42->__count;" (assignment_expression "iVar17 = pmVar42->__count" identifier = (field_expression "pmVar42->__count" identifier -> field_identifier)) ;) (expression_statement "*(int *)(puVar37 + -0x108) = iVar10;" (assignment_expression "*(int *)(puVar37 + -0x108) = iVar10" (pointer_expression "*(int *)(puVar37 + -0x108)" * (cast_expression "(int *)(puVar37 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x108)" ( (binary_expression "puVar37 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "needle_00 = pwc;" (assignment_expression "needle_00 = pwc" identifier = identifier) ;) (expression_statement "iVar9 = (*pcVar36)(iVar17);" (assignment_expression "iVar9 = (*pcVar36)(iVar17)" identifier = (call_expression "(*pcVar36)(iVar17)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(iVar17)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(puVar37 + -0x108);" (assignment_expression "iVar10 = *(int *)(puVar37 + -0x108)" identifier = (pointer_expression "*(int *)(puVar37 + -0x108)" * (cast_expression "(int *)(puVar37 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x108)" ( (binary_expression "puVar37 + -0x108" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002db1c;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002db1c;" goto statement_identifier ;)) (expression_statement "cVar14 = puVar37[-0xb0];" (assignment_expression "cVar14 = puVar37[-0xb0]" identifier = (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s2 == 0) goto LAB_0002da1c;" if (parenthesized_expression "(unaff_s2 == 0)" ( (binary_expression "unaff_s2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002da1c;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(puVar37 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar37 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar37 + -0xfc)" * (cast_expression "(int *)(puVar37 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }" else (compound_statement "{\nLAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }\n    }" { (labeled_statement "LAB_0002da10:\n      iVar9 = *(int *)(puVar37 + -0xfc);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar37 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar37 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar37 + -0xfc)" * (cast_expression "(int *)(puVar37 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xfc)" ( (binary_expression "puVar37 + -0xfc" identifier + number_literal) ))))) ;)) (if_statement "if (unaff_s2 == 0) {\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }" if (parenthesized_expression "(unaff_s2 == 0)" ( (binary_expression "unaff_s2 == 0" identifier == number_literal) )) (compound_statement "{\n        cVar14 = puVar37[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }\n        pcVar36 = *(code **)(iVar17 + -0x7b80);\n        if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }\n        goto LAB_0002ddd4;\n      }" { (expression_statement "cVar14 = puVar37[-0xb0];" (assignment_expression "cVar14 = puVar37[-0xb0]" identifier = (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0002da1c:\n        if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }" statement_identifier : (if_statement "if (cVar14 == '\0') {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }\n        else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }\n          needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0xa8) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar37[-0xa4] = 1;\n          puVar37[-0xb0] = 1;\n          *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\n        }" { (expression_statement "pmVar32 = *(mbstate_t **)(puVar37 + -0xac);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar37 + -0xac)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0xac)" * (cast_expression "(mbstate_t **)(puVar37 + -0xac)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) ))))) ;) (if_statement "if (puVar37[-0xbc] != '\0') {\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }" if (parenthesized_expression "(puVar37[-0xbc] != '\0')" ( (binary_expression "puVar37[-0xbc] != '\0'" (subscript_expression "puVar37[-0xbc]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n          }" { (labeled_statement "LAB_0002df40:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pmVar32,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pmVar32,sVar7)" identifier = (call_expression "strnlen1((char *)pmVar32,sVar7)" identifier (argument_list "((char *)pmVar32,sVar7)" ( (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);" (call_expression "rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4)" identifier (argument_list "((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4)" ( (cast_expression "(wchar_t *)unaff_s5" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) })) (expression_statement "needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;" (assignment_expression "needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count" identifier = (binary_expression "(mbstate_t *)(uint)*(byte *)&pmVar32->__count" (cast_expression "(mbstate_t *)(uint)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> ((uint)needle_00 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4" (pointer_expression "*(int *)(puVar37 + -0x100)" * (cast_expression "(int *)(puVar37 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x100)" ( (binary_expression "puVar37 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pmVar32->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pmVar32->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pmVar32->__count >> 5)" ( (binary_expression "*(byte *)&pmVar32->__count >> 5" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)needle_00 & 0x1f)" ( (binary_expression "(uint)needle_00 & 0x1f" (cast_expression "(uint)needle_00" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }\n            goto LAB_0002e0bc;\n          }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n              puVar37[-0xbc] = 1;\n              goto LAB_0002df40;\n            }" { (expression_statement "puVar37[-0xbc] = 1;" (assignment_expression "puVar37[-0xbc] = 1" (subscript_expression "puVar37[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002df40;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar37 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar37 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar37 + -0xa8)" * (cast_expression "(undefined4 *)(puVar37 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xa8)" ( (binary_expression "puVar37 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;" (assignment_expression "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" identifier = (cast_expression "(mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&pmVar32->__count" * (cast_expression "(uchar *)&pmVar32->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))))))) ;) (expression_statement "puVar37[-0xa4] = 1;" (assignment_expression "puVar37[-0xa4] = 1" (subscript_expression "puVar37[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37[-0xb0] = 1;" (assignment_expression "puVar37[-0xb0] = 1" (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0xa0) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar37 + -0xa0) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar37 + -0xa0)" * (cast_expression "(mbstate_t **)(puVar37 + -0xa0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xa0)" ( (binary_expression "puVar37 + -0xa0" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }" else (compound_statement "{\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);\n          if (puVar37[-0xa4] == '\0') goto LAB_0002da78;\n        }" { (expression_statement "pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar37 + -0xa0)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0xa0)" * (cast_expression "(mbstate_t **)(puVar37 + -0xa0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xa0)" ( (binary_expression "puVar37 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (puVar37[-0xa4] == '\0') goto LAB_0002da78;" if (parenthesized_expression "(puVar37[-0xa4] == '\0')" ( (binary_expression "puVar37[-0xa4] == '\0'" (subscript_expression "puVar37[-0xa4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002da78;" goto statement_identifier ;)) })))) (expression_statement "pcVar36 = *(code **)(iVar17 + -0x7b80);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar17 + -0x7b80)" * (cast_expression "(code **)(iVar17 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7b80)" ( (binary_expression "iVar17 + -0x7b80" identifier + number_literal) ))))) ;) (if_statement "if (pmVar32 != (mbstate_t *)0x0) {\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }" if (parenthesized_expression "(pmVar32 != (mbstate_t *)0x0)" ( (binary_expression "pmVar32 != (mbstate_t *)0x0" identifier != (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n          puVar37[-0xb0] = 0;\n          puVar37[-0x78] = 0;\n          *(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));\n          pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));\n          *(mbstate_t **)(puVar37 + -0x74) = pwc;\nLAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }\n          if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar37 + -0x70) = 1;\n          uVar6 = (uint)(char)*(uchar *)&pwc->__count;\n          puVar37[-0x6c] = 1;\n          puVar37[-0x78] = 1;\n          *(uint *)(puVar37 + -0x68) = uVar6;\nLAB_0002dae8:\n          iVar10 = unaff_s2 * 4;\n          if (uVar6 == 0) goto LAB_0002db40;\n          pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);\n          if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;\n          if (pmVar42[1].__value.__wch == uVar6) break;\n          goto LAB_0002da10;\n        }" { (labeled_statement "LAB_0002da78:\n          pmVar32 = *(mbstate_t **)(puVar37 + -0xac);" statement_identifier : (expression_statement "pmVar32 = *(mbstate_t **)(puVar37 + -0xac);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar37 + -0xac)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0xac)" * (cast_expression "(mbstate_t **)(puVar37 + -0xac)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) ))))) ;)) (expression_statement "puVar37[-0xb0] = 0;" (assignment_expression "puVar37[-0xb0] = 0" (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37[-0x78] = 0;" (assignment_expression "puVar37[-0x78] = 0" (subscript_expression "puVar37[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8));" (assignment_expression "*(uchar **)(puVar37 + -0xac) =\n               (uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8))" (pointer_expression "*(uchar **)(puVar37 + -0xac)" * (cast_expression "(uchar **)(puVar37 + -0xac)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) )))) = (cast_expression "(uchar *)((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8))" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pmVar32->__count + *(int *)(puVar37 + -0xa8))" ( (binary_expression "(int)&pmVar32->__count + *(int *)(puVar37 + -0xa8)" (cast_expression "(int)&pmVar32->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))) + (pointer_expression "*(int *)(puVar37 + -0xa8)" * (cast_expression "(int *)(puVar37 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xa8)" ( (binary_expression "puVar37 + -0xa8" identifier + number_literal) ))))) )))) ;) (expression_statement "pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70));" (assignment_expression "pwc = (mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70))" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70))" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70))" ( (binary_expression "*(int *)(puVar37 + -0x74) + *(int *)(puVar37 + -0x70)" (pointer_expression "*(int *)(puVar37 + -0x74)" * (cast_expression "(int *)(puVar37 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x74)" ( (binary_expression "puVar37 + -0x74" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar37 + -0x70)" * (cast_expression "(int *)(puVar37 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x70)" ( (binary_expression "puVar37 + -0x70" identifier + number_literal) ))))) )))) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x74) = pwc;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x74) = pwc" (pointer_expression "*(mbstate_t **)(puVar37 + -0x74)" * (cast_expression "(mbstate_t **)(puVar37 + -0x74)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x74)" ( (binary_expression "puVar37 + -0x74" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002daa0:\n          if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }" statement_identifier : (if_statement "if (puVar37[-0x84] != '\0') {\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }" if (parenthesized_expression "(puVar37[-0x84] != '\0')" ( (binary_expression "puVar37[-0x84] != '\0'" (subscript_expression "puVar37[-0x84]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pwc,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);\n          }" { (labeled_statement "LAB_0002dc78:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pwc,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pwc,sVar7)" identifier = (call_expression "strnlen1((char *)pwc,sVar7)" identifier (argument_list "((char *)pwc,sVar7)" ( (cast_expression "(char *)pwc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6);" (call_expression "rpl_mbrtowc((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6)" identifier (argument_list "((wchar_t *)unaff_s3,(char *)pwc,sVar7,unaff_s6)" ( (cast_expression "(wchar_t *)unaff_s3" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)pwc" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) }))) (if_statement "if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4) >>\n               (*(byte *)&pwc->__count & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pwc->__count >> 5) * 4" (pointer_expression "*(int *)(puVar37 + -0x100)" * (cast_expression "(int *)(puVar37 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x100)" ( (binary_expression "puVar37 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pwc->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pwc->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pwc->__count >> 5)" ( (binary_expression "*(byte *)&pwc->__count >> 5" (pointer_expression "*(byte *)&pwc->__count" * (cast_expression "(byte *)&pwc->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*(byte *)&pwc->__count & 0x1f)" ( (binary_expression "*(byte *)&pwc->__count & 0x1f" (pointer_expression "*(byte *)&pwc->__count" * (cast_expression "(byte *)&pwc->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier)))) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n            iVar17 = *(int *)(puVar37 + -0x118);\n            if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }\n            goto LAB_0002e0bc;\n          }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(unaff_s6)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n              puVar37[-0x84] = 1;\n              goto LAB_0002dc78;\n            }" { (expression_statement "puVar37[-0x84] = 1;" (assignment_expression "puVar37[-0x84] = 1" (subscript_expression "puVar37[-0x84]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002dc78;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar37 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar37 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar37 + -0x70)" * (cast_expression "(undefined4 *)(puVar37 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x70)" ( (binary_expression "puVar37 + -0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = (uint)(char)*(uchar *)&pwc->__count;" (assignment_expression "uVar6 = (uint)(char)*(uchar *)&pwc->__count" identifier = (binary_expression "(uint)(char)*(uchar *)&pwc->__count" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) * (cast_expression "(uchar *)&pwc->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier))))) ;) (expression_statement "puVar37[-0x6c] = 1;" (assignment_expression "puVar37[-0x6c] = 1" (subscript_expression "puVar37[-0x6c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37[-0x78] = 1;" (assignment_expression "puVar37[-0x78] = 1" (subscript_expression "puVar37[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(uint *)(puVar37 + -0x68) = uVar6;" (assignment_expression "*(uint *)(puVar37 + -0x68) = uVar6" (pointer_expression "*(uint *)(puVar37 + -0x68)" * (cast_expression "(uint *)(puVar37 + -0x68)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x68)" ( (binary_expression "puVar37 + -0x68" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002dae8:\n          iVar10 = unaff_s2 * 4;" statement_identifier : (expression_statement "iVar10 = unaff_s2 * 4;" (assignment_expression "iVar10 = unaff_s2 * 4" identifier = (binary_expression "unaff_s2 * 4" identifier * number_literal)) ;)) (if_statement "if (uVar6 == 0) goto LAB_0002db40;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002db40;" goto statement_identifier ;)) (expression_statement "pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8);" (assignment_expression "pmVar42 = (mbstate_t *)((int)haystack + unaff_s2 * 5 * 8)" identifier = (cast_expression "(mbstate_t *)((int)haystack + unaff_s2 * 5 * 8)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)haystack + unaff_s2 * 5 * 8)" ( (binary_expression "(int)haystack + unaff_s2 * 5 * 8" (cast_expression "(int)haystack" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "unaff_s2 * 5 * 8" (binary_expression "unaff_s2 * 5" identifier * number_literal) * number_literal)) )))) ;) (if_statement "if (*(uchar *)&pmVar42[1].__count == '\0') goto LAB_0002da00;" if (parenthesized_expression "(*(uchar *)&pmVar42[1].__count == '\0')" ( (binary_expression "*(uchar *)&pmVar42[1].__count == '\0'" (pointer_expression "*(uchar *)&pmVar42[1].__count" * (cast_expression "(uchar *)&pmVar42[1].__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar42[1].__count" & (field_expression "pmVar42[1].__count" (subscript_expression "pmVar42[1]" identifier [ number_literal ]) . field_identifier)))) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002da00;" goto statement_identifier ;)) (if_statement "if (pmVar42[1].__value.__wch == uVar6) break;" if (parenthesized_expression "(pmVar42[1].__value.__wch == uVar6)" ( (binary_expression "pmVar42[1].__value.__wch == uVar6" (field_expression "pmVar42[1].__value.__wch" (field_expression "pmVar42[1].__value" (subscript_expression "pmVar42[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) == identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0002da10;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ddd4;" goto statement_identifier ;) })) }))) (expression_statement "pwc = *(mbstate_t **)(iVar9 + iVar10);" (assignment_expression "pwc = *(mbstate_t **)(iVar9 + iVar10)" identifier = (pointer_expression "*(mbstate_t **)(iVar9 + iVar10)" * (cast_expression "(mbstate_t **)(iVar9 + iVar10)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + iVar10)" ( (binary_expression "iVar9 + iVar10" identifier + identifier) ))))) ;) (expression_statement "*(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc;" (assignment_expression "*(int *)(puVar37 + -0x108) = unaff_s2 - (int)pwc" (pointer_expression "*(int *)(puVar37 + -0x108)" * (cast_expression "(int *)(puVar37 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x108)" ( (binary_expression "puVar37 + -0x108" identifier + number_literal) )))) = (binary_expression "unaff_s2 - (int)pwc" identifier - (cast_expression "(int)pwc" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (pwc == (mbstate_t *)0x0) {\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }" if (parenthesized_expression "(pwc == (mbstate_t *)0x0)" ( (binary_expression "pwc == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      cVar14 = puVar37[-0x78];\n      goto joined_r0x0002d9dc;\n    }" { (expression_statement "cVar14 = puVar37[-0x78];" (assignment_expression "cVar14 = puVar37[-0x78]" identifier = (subscript_expression "puVar37[-0x78]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x0002d9dc;" goto statement_identifier ;) })) (if_statement "if (puVar37[-0xb0] == '\0') {\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }" if (parenthesized_expression "(puVar37[-0xb0] == '\0')" ( (binary_expression "puVar37[-0xb0] == '\0'" (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pmVar32 = *(mbstate_t **)(puVar37 + -0xac);\n      goto LAB_0002dd80;\n    }" { (expression_statement "pmVar32 = *(mbstate_t **)(puVar37 + -0xac);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar37 + -0xac)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0xac)" * (cast_expression "(mbstate_t **)(puVar37 + -0xac)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002dd80;" goto statement_identifier ;) })) (expression_statement "pmVar32 = *(mbstate_t **)(puVar37 + -0xa0);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar37 + -0xa0)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0xa0)" * (cast_expression "(mbstate_t **)(puVar37 + -0xa0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xa0)" ( (binary_expression "puVar37 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (puVar37[-0xa4] != '\0') goto LAB_0002ddcc;" if (parenthesized_expression "(puVar37[-0xa4] != '\0')" ( (binary_expression "puVar37[-0xa4] != '\0'" (subscript_expression "puVar37[-0xa4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ddcc;" goto statement_identifier ;)) (while_statement "while( true ) {\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);\n      puVar37[-0xb0] = 0;\n      pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));\n      *(mbstate_t **)(puVar37 + -0xac) = pmVar32;\n      if (pwc == (mbstate_t *)0x0) break;\nLAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;\n      needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n      pcVar36 = *(code **)(iVar17 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar37 + -0xa8) = 1;\n      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n      puVar37[-0xa4] = 1;\n      puVar37[-0xb0] = 1;\n      *(mbstate_t **)(puVar37 + -0xa0) = pmVar32;\nLAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);\n      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;\n    }" { (expression_statement "pwc = (mbstate_t *)((int)&pwc[-1].__value + 3);" (assignment_expression "pwc = (mbstate_t *)((int)&pwc[-1].__value + 3)" identifier = (cast_expression "(mbstate_t *)((int)&pwc[-1].__value + 3)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pwc[-1].__value + 3)" ( (binary_expression "(int)&pwc[-1].__value + 3" (cast_expression "(int)&pwc[-1].__value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pwc[-1].__value" & (field_expression "pwc[-1].__value" (subscript_expression "pwc[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "puVar37[-0xb0] = 0;" (assignment_expression "puVar37[-0xb0] = 0" (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8));" (assignment_expression "pmVar32 = (mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8))" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8))" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8))" ( (binary_expression "*(int *)(puVar37 + -0xac) + *(int *)(puVar37 + -0xa8)" (pointer_expression "*(int *)(puVar37 + -0xac)" * (cast_expression "(int *)(puVar37 + -0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar37 + -0xa8)" * (cast_expression "(int *)(puVar37 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xa8)" ( (binary_expression "puVar37 + -0xa8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0xac) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar37 + -0xac) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar37 + -0xac)" * (cast_expression "(mbstate_t **)(puVar37 + -0xac)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pwc == (mbstate_t *)0x0) break;" if (parenthesized_expression "(pwc == (mbstate_t *)0x0)" ( (binary_expression "pwc == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0002dd80:\n      if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;" statement_identifier : (if_statement "if (puVar37[-0xbc] != '\0') goto LAB_0002ddf4;" if (parenthesized_expression "(puVar37[-0xbc] != '\0')" ( (binary_expression "puVar37[-0xbc] != '\0'" (subscript_expression "puVar37[-0xbc]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ddf4;" goto statement_identifier ;))) (expression_statement "needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;" (assignment_expression "needle_00 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count" identifier = (binary_expression "(mbstate_t *)(uint)*(byte *)&pmVar32->__count" (cast_expression "(mbstate_t *)(uint)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))))) ;) (expression_statement "pcVar36 = *(code **)(iVar17 + -0x799c);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0) goto LAB_0002dddc;" if (parenthesized_expression "((*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n           ((uint)needle_00 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar37 + -0x100) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4" (pointer_expression "*(int *)(puVar37 + -0x100)" * (cast_expression "(int *)(puVar37 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x100)" ( (binary_expression "puVar37 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pmVar32->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pmVar32->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pmVar32->__count >> 5)" ( (binary_expression "*(byte *)&pmVar32->__count >> 5" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)needle_00 & 0x1f)" ( (binary_expression "(uint)needle_00 & 0x1f" (cast_expression "(uint)needle_00" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002dddc;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar37 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar37 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar37 + -0xa8)" * (cast_expression "(undefined4 *)(puVar37 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xa8)" ( (binary_expression "puVar37 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;" (assignment_expression "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" identifier = (cast_expression "(mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&pmVar32->__count" * (cast_expression "(uchar *)&pmVar32->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))))))) ;) (expression_statement "puVar37[-0xa4] = 1;" (assignment_expression "puVar37[-0xa4] = 1" (subscript_expression "puVar37[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37[-0xb0] = 1;" (assignment_expression "puVar37[-0xb0] = 1" (subscript_expression "puVar37[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0xa0) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar37 + -0xa0) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar37 + -0xa0)" * (cast_expression "(mbstate_t **)(puVar37 + -0xa0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0xa0)" ( (binary_expression "puVar37 + -0xa0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ddcc:\n      pcVar36 = *(code **)(iVar17 + -0x7b80);" statement_identifier : (expression_statement "pcVar36 = *(code **)(iVar17 + -0x7b80);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar17 + -0x7b80)" * (cast_expression "(code **)(iVar17 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7b80)" ( (binary_expression "iVar17 + -0x7b80" identifier + number_literal) ))))) ;)) (if_statement "if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002ddd4;" if (parenthesized_expression "(pmVar32 == (mbstate_t *)0x0)" ( (binary_expression "pmVar32 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ddd4;" goto statement_identifier ;)) })) (expression_statement "cVar14 = puVar37[-0x78];" (assignment_expression "cVar14 = puVar37[-0x78]" identifier = (subscript_expression "puVar37[-0x78]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2 = *(int *)(puVar37 + -0x108);" (assignment_expression "unaff_s2 = *(int *)(puVar37 + -0x108)" identifier = (pointer_expression "*(int *)(puVar37 + -0x108)" * (cast_expression "(int *)(puVar37 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x108)" ( (binary_expression "puVar37 + -0x108" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) (expression_statement "pmVar32 = *(mbstate_t **)(puVar37 + -0x70);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar37 + -0x70)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0x70)" * (cast_expression "(mbstate_t **)(puVar37 + -0x70)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x70)" ( (binary_expression "puVar37 + -0x70" identifier + number_literal) ))))) ;) (expression_statement "pwc = *(mbstate_t **)(puVar37 + -0x74);" (assignment_expression "pwc = *(mbstate_t **)(puVar37 + -0x74)" identifier = (pointer_expression "*(mbstate_t **)(puVar37 + -0x74)" * (cast_expression "(mbstate_t **)(puVar37 + -0x74)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x74)" ( (binary_expression "puVar37 + -0x74" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002db1c:\n  pwc = (mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count);" statement_identifier : (expression_statement "pwc = (mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count);" (assignment_expression "pwc = (mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count)" identifier = (cast_expression "(mbstate_t *)((int)&pmVar32->__count + (int)&pwc->__count)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pmVar32->__count + (int)&pwc->__count)" ( (binary_expression "(int)&pmVar32->__count + (int)&pwc->__count" (cast_expression "(int)&pmVar32->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))) + (cast_expression "(int)&pwc->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pwc->__count" & (field_expression "pwc->__count" identifier -> field_identifier)))) )))) ;)) (expression_statement "unaff_s2 = unaff_s2 + 1;" (assignment_expression "unaff_s2 = unaff_s2 + 1" identifier = (binary_expression "unaff_s2 + 1" identifier + number_literal)) ;) (expression_statement "puVar37[-0x78] = 0;" (assignment_expression "puVar37[-0x78] = 0" (subscript_expression "puVar37[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar37 + -0x74) = pwc;" (assignment_expression "*(mbstate_t **)(puVar37 + -0x74) = pwc" (pointer_expression "*(mbstate_t **)(puVar37 + -0x74)" * (cast_expression "(mbstate_t **)(puVar37 + -0x74)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x74)" ( (binary_expression "puVar37 + -0x74" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(puVar37 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar17 + -0x7ca0))(haystack);\n    _Var15 = true;\n    iVar17 = *(int *)(puVar37 + -0x118);\n    goto LAB_0002db5c;\n  }" if (parenthesized_expression "(*(int *)(puVar37 + -0x104) == unaff_s2)" ( (binary_expression "*(int *)(puVar37 + -0x104) == unaff_s2" (pointer_expression "*(int *)(puVar37 + -0x104)" * (cast_expression "(int *)(puVar37 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x104)" ( (binary_expression "puVar37 + -0x104" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    **(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar17 + -0x7ca0))(haystack);\n    _Var15 = true;\n    iVar17 = *(int *)(puVar37 + -0x118);\n    goto LAB_0002db5c;\n  }" { (expression_statement "**(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac);" (assignment_expression "**(undefined4 **)(puVar37 + -0x110) = *(undefined4 *)(puVar37 + -0xac)" (pointer_expression "**(undefined4 **)(puVar37 + -0x110)" * (pointer_expression "*(undefined4 **)(puVar37 + -0x110)" * (cast_expression "(undefined4 **)(puVar37 + -0x110)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar37 + -0x110)" ( (binary_expression "puVar37 + -0x110" identifier + number_literal) ))))) = (pointer_expression "*(undefined4 *)(puVar37 + -0xac)" * (cast_expression "(undefined4 *)(puVar37 + -0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0xac)" ( (binary_expression "puVar37 + -0xac" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002db40:\n    (**(code **)(iVar17 + -0x7ca0))(haystack);" statement_identifier : (expression_statement "(**(code **)(iVar17 + -0x7ca0))(haystack);" (call_expression "(**(code **)(iVar17 + -0x7ca0))(haystack)" (parenthesized_expression "(**(code **)(iVar17 + -0x7ca0))" ( (pointer_expression "**(code **)(iVar17 + -0x7ca0)" * (pointer_expression "*(code **)(iVar17 + -0x7ca0)" * (cast_expression "(code **)(iVar17 + -0x7ca0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7ca0)" ( (binary_expression "iVar17 + -0x7ca0" identifier + number_literal) ))))) )) (argument_list "(haystack)" ( identifier ))) ;)) (expression_statement "_Var15 = true;" (assignment_expression "_Var15 = true" identifier = true) ;) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002db5c;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002daa0;" goto statement_identifier ;) (labeled_statement "LAB_0002ef34:\n  pmVar11 = *(mbstate_t **)(puVar38 + -0x148);" statement_identifier : (expression_statement "pmVar11 = *(mbstate_t **)(puVar38 + -0x148);" (assignment_expression "pmVar11 = *(mbstate_t **)(puVar38 + -0x148)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x148)" * (cast_expression "(mbstate_t **)(puVar38 + -0x148)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x148)" ( (binary_expression "puVar38 + -0x148" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) (labeled_statement "LAB_0002ddd4:\n  (*pcVar36)();" statement_identifier : (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_0002dddc:\n  iVar10 = (*pcVar36)(unaff_s4);" statement_identifier : (expression_statement "iVar10 = (*pcVar36)(unaff_s4);" (assignment_expression "iVar10 = (*pcVar36)(unaff_s4)" identifier = (call_expression "(*pcVar36)(unaff_s4)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;)) (expression_statement "iVar17 = *(int *)(puVar37 + -0x118);" (assignment_expression "iVar17 = *(int *)(puVar37 + -0x118)" identifier = (pointer_expression "*(int *)(puVar37 + -0x118)" * (cast_expression "(int *)(puVar37 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x118)" ( (binary_expression "puVar37 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n    puVar37[-0xbc] = 1;\nLAB_0002ddf4:\n    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n    rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n  }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    puVar37[-0xbc] = 1;\nLAB_0002ddf4:\n    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n    rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);\n  }" { (expression_statement "puVar37[-0xbc] = 1;" (assignment_expression "puVar37[-0xbc] = 1" (subscript_expression "puVar37[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002ddf4:\n    sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pmVar32,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pmVar32,sVar7)" identifier = (call_expression "strnlen1((char *)pmVar32,sVar7)" identifier (argument_list "((char *)pmVar32,sVar7)" ( (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4);" (call_expression "rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4)" identifier (argument_list "((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,unaff_s4)" ( (cast_expression "(wchar_t *)unaff_s5" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) })) (labeled_statement "LAB_0002e0bc:\n  pmVar27 = (mbstate_t *)0x96;" statement_identifier : (expression_statement "pmVar27 = (mbstate_t *)0x96;" (assignment_expression "pmVar27 = (mbstate_t *)0x96" identifier = (cast_expression "(mbstate_t *)0x96" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "pcVar36 = *(code **)(iVar17 + -0x7bb0);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x7bb0)" identifier = (pointer_expression "*(code **)(iVar17 + -0x7bb0)" * (cast_expression "(code **)(iVar17 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7bb0)" ( (binary_expression "iVar17 + -0x7bb0" identifier + number_literal) ))))) ;) (expression_statement "needle_00 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);" (assignment_expression "needle_00 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120)" identifier = (cast_expression "(mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar17 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar17 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar17 + -0x7fc8)" * (cast_expression "(int *)(iVar17 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7fc8)" ( (binary_expression "iVar17 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pmVar42 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x100);" (assignment_expression "pmVar42 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x100)" identifier = (cast_expression "(mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x100)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar17 + -0x7fc8) + -0x100)" ( (binary_expression "*(int *)(iVar17 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar17 + -0x7fc8)" * (cast_expression "(int *)(iVar17 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7fc8)" ( (binary_expression "iVar17 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0002e0e0:\n  pcVar41 = mbsstr;" statement_identifier : (expression_statement "pcVar41 = mbsstr;" (assignment_expression "pcVar41 = mbsstr" identifier = identifier) ;)) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar36 + 0x47b00);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar36 + 0x47b00)" identifier = (pointer_expression "*(undefined4 **)(pcVar36 + 0x47b00)" * (cast_expression "(undefined4 **)(pcVar36 + 0x47b00)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x47b00)" ( (binary_expression "pcVar36 + 0x47b00" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar36 + 0x47a80);" (assignment_expression "pcVar40 = *(code **)(pcVar36 + 0x47a80)" identifier = (pointer_expression "*(code **)(pcVar36 + 0x47a80)" * (cast_expression "(code **)(pcVar36 + 0x47a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x47a80)" ( (binary_expression "pcVar36 + 0x47a80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar38 + -0x154) = puVar8;" (assignment_expression "*(undefined4 **)(puVar38 + -0x154) = puVar8" (pointer_expression "*(undefined4 **)(puVar38 + -0x154)" * (cast_expression "(undefined4 **)(puVar38 + -0x154)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x154)" ( (binary_expression "puVar38 + -0x154" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -0x170) = pcVar36 + 0x4f498;" (assignment_expression "*(code **)(puVar38 + -0x170) = pcVar36 + 0x4f498" (pointer_expression "*(code **)(puVar38 + -0x170)" * (cast_expression "(code **)(puVar38 + -0x170)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) )))) = (binary_expression "pcVar36 + 0x4f498" identifier + number_literal)) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x1c) = unaff_s3;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x1c) = unaff_s3" (pointer_expression "*(mbstate_t **)(puVar38 + -0x1c)" * (cast_expression "(mbstate_t **)(puVar38 + -0x1c)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1c)" ( (binary_expression "puVar38 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar38 + -0x20) = unaff_s2;" (assignment_expression "*(int *)(puVar38 + -0x20) = unaff_s2" (pointer_expression "*(int *)(puVar38 + -0x20)" * (cast_expression "(int *)(puVar38 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x20)" ( (binary_expression "puVar38 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -4) = pcVar41;" (assignment_expression "*(code **)(puVar38 + -4) = pcVar41" (pointer_expression "*(code **)(puVar38 + -4)" * (cast_expression "(code **)(puVar38 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -4)" ( (binary_expression "puVar38 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar38 + -8) = puVar37 + -0x128;" (assignment_expression "*(undefined1 **)(puVar38 + -8) = puVar37 + -0x128" (pointer_expression "*(undefined1 **)(puVar38 + -8)" * (cast_expression "(undefined1 **)(puVar38 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -8)" ( (binary_expression "puVar38 + -8" identifier + number_literal) )))) = (binary_expression "puVar37 + -0x128" identifier + number_literal)) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0xc) = pwc;" (assignment_expression "*(mbstate_t **)(puVar38 + -0xc) = pwc" (pointer_expression "*(mbstate_t **)(puVar38 + -0xc)" * (cast_expression "(mbstate_t **)(puVar38 + -0xc)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc)" ( (binary_expression "puVar38 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x10) = unaff_s6;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x10) = unaff_s6" (pointer_expression "*(mbstate_t **)(puVar38 + -0x10)" * (cast_expression "(mbstate_t **)(puVar38 + -0x10)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x10)" ( (binary_expression "puVar38 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x14) = unaff_s5;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x14) = unaff_s5" (pointer_expression "*(mbstate_t **)(puVar38 + -0x14)" * (cast_expression "(mbstate_t **)(puVar38 + -0x14)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x14)" ( (binary_expression "puVar38 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x18) = unaff_s4;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x18) = unaff_s4" (pointer_expression "*(mbstate_t **)(puVar38 + -0x18)" * (cast_expression "(mbstate_t **)(puVar38 + -0x18)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x18)" ( (binary_expression "puVar38 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x24) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x24) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0x24)" * (cast_expression "(mbstate_t **)(puVar38 + -0x24)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x24)" ( (binary_expression "puVar38 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uchar **)(puVar38 + -0x28) = haystack;" (assignment_expression "*(uchar **)(puVar38 + -0x28) = haystack" (pointer_expression "*(uchar **)(puVar38 + -0x28)" * (cast_expression "(uchar **)(puVar38 + -0x28)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x28)" ( (binary_expression "puVar38 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x2c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar38 + -0x2c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar38 + -0x2c)" * (cast_expression "(undefined4 *)(puVar38 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x2c)" ( (binary_expression "puVar38 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "pmVar26 = needle_00;" (assignment_expression "pmVar26 = needle_00" identifier = identifier) ;) (expression_statement "uVar6 = (*pcVar40)();" (assignment_expression "uVar6 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pmVar11 = pmVar42;" (assignment_expression "pmVar11 = pmVar42" identifier = identifier) ;) (if_statement "if (uVar6 < 2) {\n    unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count;\n    ps = (mbstate_t *)(puVar37 + -0x128);\n    if (unaff_s6 != (mbstate_t *)0x0) {\n      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }\nLAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;\n    }\nLAB_0002e2ac:\n    s = *(byte **)(puVar38 + -0x2c);\n    if (s == (byte *)**(undefined4 **)(puVar38 + -0x154)) {\n      return SUB41(pmVar11,0);\n    }\n  }\n  else {\n    bVar1 = *(byte *)&needle_00->__count;\n    haystack = puVar38 + -0x140;\n    iVar10 = *(int *)(iVar17 + -0x7c98);\n    *(undefined4 *)(puVar38 + -0x140) = 0;\n    pmVar26 = (mbstate_t *)(uint)bVar1;\n    *(undefined4 *)(puVar38 + -0x13c) = 0;\n    *(int *)(puVar38 + -0x168) = iVar10;\n    *(mbstate_t **)(puVar38 + -0x134) = needle_00;\n    puVar38[-0x144] = 0;\n    uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);\n    puVar38[-0x138] = 0;\n    if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  pcVar41 = mbsnwidth;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);\n  pcVar40 = *(code **)(pcVar36 + 0x46bd8);\n  *(undefined4 **)(puVar38 + -0x1bc) = puVar8;\n  *(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;\n  *(mbstate_t **)(puVar38 + -400) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;\n  pbVar33 = s + (int)pmVar26;\n  *(code **)(puVar38 + -0x184) = pcVar41;\n  *(mbstate_t **)(puVar38 + -0x188) = ps;\n  *(mbstate_t **)(puVar38 + -0x18c) = pwc;\n  *(mbstate_t **)(puVar38 + -0x194) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x198) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x19c) = needle_00;\n  *(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;\n  *(uchar **)(puVar38 + -0x1a8) = haystack;\n  *(mbstate_t **)(puVar38 + -0x178) = pmVar27;\n  *(undefined4 *)(puVar38 + -0x1ac) = *puVar8;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x1c8);\n  if (uVar6 < 2) {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }\nLAB_0002f060:\n  piVar22 = *(int **)(puVar38 + -0x1bc);\nLAB_0002f064:\n  string = *(char **)(puVar38 + -0x1ac);\n  if (string != (char *)*piVar22) {\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }\n  return SUB41(iVar10,0);\n}" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n    unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count;\n    ps = (mbstate_t *)(puVar37 + -0x128);\n    if (unaff_s6 != (mbstate_t *)0x0) {\n      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }\nLAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;\n    }\nLAB_0002e2ac:\n    s = *(byte **)(puVar38 + -0x2c);\n    if (s == (byte *)**(undefined4 **)(puVar38 + -0x154)) {\n      return SUB41(pmVar11,0);\n    }\n  }" { (expression_statement "unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count;" (assignment_expression "unaff_s6 = (mbstate_t *)(int)(char)*(uchar *)&needle_00->__count" identifier = (cast_expression "(mbstate_t *)(int)(char)*(uchar *)&needle_00->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*(uchar *)&needle_00->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&needle_00->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&needle_00->__count" * (cast_expression "(uchar *)&needle_00->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&needle_00->__count" & (field_expression "needle_00->__count" identifier -> field_identifier)))))))) ;) (expression_statement "ps = (mbstate_t *)(puVar37 + -0x128);" (assignment_expression "ps = (mbstate_t *)(puVar37 + -0x128)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0x128)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x128)" ( (binary_expression "puVar37 + -0x128" identifier + number_literal) )))) ;) (if_statement "if (unaff_s6 != (mbstate_t *)0x0) {\n      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }\nLAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;\n    }" if (parenthesized_expression "(unaff_s6 != (mbstate_t *)0x0)" ( (binary_expression "unaff_s6 != (mbstate_t *)0x0" identifier != (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }\nLAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;\n    }" { (expression_statement "pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1);" (assignment_expression "pmVar32 = (mbstate_t *)((int)&needle_00->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&needle_00->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&needle_00->__count + 1)" ( (binary_expression "(int)&needle_00->__count + 1" (cast_expression "(int)&needle_00->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&needle_00->__count" & (field_expression "needle_00->__count" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "ps = (mbstate_t *)(puVar37 + -0x128);" (assignment_expression "ps = (mbstate_t *)(puVar37 + -0x128)" identifier = (cast_expression "(mbstate_t *)(puVar37 + -0x128)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar37 + -0x128)" ( (binary_expression "puVar37 + -0x128" identifier + number_literal) )))) ;) (if_statement "if (*(uchar *)&pmVar42->__count != '\0') {\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }" if (parenthesized_expression "(*(uchar *)&pmVar42->__count != '\0')" ( (binary_expression "*(uchar *)&pmVar42->__count != '\0'" (pointer_expression "*(uchar *)&pmVar42->__count" * (cast_expression "(uchar *)&pmVar42->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar42->__count" & (field_expression "pmVar42->__count" identifier -> field_identifier)))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pwc = (mbstate_t *)0x0;\n        unaff_s5 = (mbstate_t *)0x0;\n        iVar10 = 1;\n        ps = (mbstate_t *)(puVar38 + -0x148);\n        haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);\n        pmVar30 = needle_00;\n        pmVar29 = pmVar42;\n        pmVar5 = (mbstate_t *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');\n      }" { (expression_statement "pwc = (mbstate_t *)0x0;" (assignment_expression "pwc = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (mbstate_t *)0x0;" (assignment_expression "unaff_s5 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (expression_statement "ps = (mbstate_t *)(puVar38 + -0x148);" (assignment_expression "ps = (mbstate_t *)(puVar38 + -0x148)" identifier = (cast_expression "(mbstate_t *)(puVar38 + -0x148)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x148)" ( (binary_expression "puVar38 + -0x148" identifier + number_literal) )))) ;) (expression_statement "haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80);" (assignment_expression "haystack = (uchar *)(*(int *)(iVar17 + -32000) + -0x2b80)" identifier = (cast_expression "(uchar *)(*(int *)(iVar17 + -32000) + -0x2b80)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar17 + -32000) + -0x2b80)" ( (binary_expression "*(int *)(iVar17 + -32000) + -0x2b80" (pointer_expression "*(int *)(iVar17 + -32000)" * (cast_expression "(int *)(iVar17 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -32000)" ( (binary_expression "iVar17 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pmVar30 = needle_00;" (assignment_expression "pmVar30 = needle_00" identifier = identifier) ;) (expression_statement "pmVar29 = pmVar42;" (assignment_expression "pmVar29 = pmVar42" identifier = identifier) ;) (expression_statement "pmVar5 = (mbstate_t *)0x0;" (assignment_expression "pmVar5 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002e18c:\n        do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');" statement_identifier : (do_statement "do {\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        } while (*(char *)((int)&pmVar11->__count + 1) != '\0');" do (compound_statement "{\n          unaff_s4 = pmVar5;\n          pmVar11 = pmVar29;\n          pmVar42 = pmVar11;\n          if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);\n          pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);\n          if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }\n          pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);\n        }" { (expression_statement "unaff_s4 = pmVar5;" (assignment_expression "unaff_s4 = pmVar5" identifier = identifier) ;) (expression_statement "pmVar11 = pmVar29;" (assignment_expression "pmVar11 = pmVar29" identifier = identifier) ;) (expression_statement "pmVar42 = pmVar11;" (assignment_expression "pmVar42 = pmVar11" identifier = identifier) ;) (if_statement "if (((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }" if (parenthesized_expression "(((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4))" ( (binary_expression "((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)) &&\n             ((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)" (parenthesized_expression "((iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5))" ( (binary_expression "(iVar10 != 0) && ((mbstate_t *)&DAT_00000009 < unaff_s5)" (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) && (parenthesized_expression "((mbstate_t *)&DAT_00000009 < unaff_s5)" ( (binary_expression "(mbstate_t *)&DAT_00000009 < unaff_s5" (cast_expression "(mbstate_t *)&DAT_00000009" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000009" & identifier)) < identifier) ))) )) && (parenthesized_expression "((mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4)" ( (binary_expression "(mbstate_t *)((int)unaff_s5 * 5) <= unaff_s4" (cast_expression "(mbstate_t *)((int)unaff_s5 * 5)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 * 5)" ( (binary_expression "(int)unaff_s5 * 5" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) <= identifier) ))) )) (compound_statement "{\n            *(int *)(puVar38 + -0x168) = iVar10;\n            if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }\n            pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);\n            pmVar26 = needle_00;\n            _Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;\n            pmVar30 = (mbstate_t *)0x0;\n            iVar10 = 0;\n          }" { (expression_statement "*(int *)(puVar38 + -0x168) = iVar10;" (assignment_expression "*(int *)(puVar38 + -0x168) = iVar10" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pmVar30 != (mbstate_t *)0x0) {\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }" if (parenthesized_expression "(pmVar30 != (mbstate_t *)0x0)" ( (binary_expression "pmVar30 != (mbstate_t *)0x0" identifier != (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar36 = *(code **)(iVar17 + -0x7af4);\n              pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);\n              *(mbstate_t **)(puVar38 + -0x164) = pmVar30;\n              iVar10 = (*pcVar36)(pmVar30);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);\n              iVar10 = *(int *)(puVar38 + -0x168);\n              pwc = unaff_s4;\n              if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;\n            }" { (expression_statement "pcVar36 = *(code **)(iVar17 + -0x7af4);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x7af4)" identifier = (pointer_expression "*(code **)(iVar17 + -0x7af4)" * (cast_expression "(code **)(iVar17 + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7af4)" ( (binary_expression "iVar17 + -0x7af4" identifier + number_literal) ))))) ;) (expression_statement "pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc);" (assignment_expression "pmVar26 = (mbstate_t *)((int)unaff_s4 - (int)pwc)" identifier = (cast_expression "(mbstate_t *)((int)unaff_s4 - (int)pwc)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s4 - (int)pwc)" ( (binary_expression "(int)unaff_s4 - (int)pwc" (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwc" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x164) = pmVar30;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x164) = pmVar30" (pointer_expression "*(mbstate_t **)(puVar38 + -0x164)" * (cast_expression "(mbstate_t **)(puVar38 + -0x164)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x164)" ( (binary_expression "puVar38 + -0x164" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = (*pcVar36)(pmVar30);" (assignment_expression "iVar10 = (*pcVar36)(pmVar30)" identifier = (call_expression "(*pcVar36)(pmVar30)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(pmVar30)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10);" (assignment_expression "pmVar30 = (mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10)" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar38 + -0x164) + iVar10)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x164) + iVar10)" ( (binary_expression "*(int *)(puVar38 + -0x164) + iVar10" (pointer_expression "*(int *)(puVar38 + -0x164)" * (cast_expression "(int *)(puVar38 + -0x164)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x164)" ( (binary_expression "puVar38 + -0x164" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar10 = *(int *)(puVar38 + -0x168);" (assignment_expression "iVar10 = *(int *)(puVar38 + -0x168)" identifier = (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) ))))) ;) (expression_statement "pwc = unaff_s4;" (assignment_expression "pwc = unaff_s4" identifier = identifier) ;) (if_statement "if (*(uchar *)&pmVar30->__count != '\0') goto LAB_0002e218;" if (parenthesized_expression "(*(uchar *)&pmVar30->__count != '\0')" ( (binary_expression "*(uchar *)&pmVar30->__count != '\0'" (pointer_expression "*(uchar *)&pmVar30->__count" * (cast_expression "(uchar *)&pmVar30->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar30->__count" & (field_expression "pmVar30->__count" identifier -> field_identifier)))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e218;" goto statement_identifier ;)) })) (expression_statement "pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00);" (assignment_expression "pmVar27 = (mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00)" identifier = (cast_expression "(mbstate_t *)(**(code **)(iVar17 + -0x7a8c))(needle_00)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar17 + -0x7a8c))(needle_00)" (parenthesized_expression "(**(code **)(iVar17 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar17 + -0x7a8c)" * (pointer_expression "*(code **)(iVar17 + -0x7a8c)" * (cast_expression "(code **)(iVar17 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a8c)" ( (binary_expression "iVar17 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(needle_00)" ( identifier ))))) ;) (expression_statement "pmVar26 = needle_00;" (assignment_expression "pmVar26 = needle_00" identifier = identifier) ;) (expression_statement "_Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps);" (assignment_expression "_Var15 = knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps)" identifier = (call_expression "knuth_morris_pratt((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps)" identifier (argument_list "((uchar *)pmVar11,(uchar *)needle_00,(size_t)pmVar27,\n                                        (uchar **)ps)" ( (cast_expression "(uchar *)pmVar11" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(uchar *)needle_00" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(size_t)pmVar27" ( (type_descriptor "size_t" primitive_type) ) identifier) , (cast_expression "(uchar **)ps" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (CONCAT31(extraout_var,_Var15) != 0) goto LAB_0002ef34;" if (parenthesized_expression "(CONCAT31(extraout_var,_Var15) != 0)" ( (binary_expression "CONCAT31(extraout_var,_Var15) != 0" (call_expression "CONCAT31(extraout_var,_Var15)" identifier (argument_list "(extraout_var,_Var15)" ( identifier , identifier ))) != number_literal) )) (goto_statement "goto LAB_0002ef34;" goto statement_identifier ;)) (expression_statement "pmVar30 = (mbstate_t *)0x0;" (assignment_expression "pmVar30 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) })) (labeled_statement "LAB_0002e218:\n          unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);" statement_identifier : (expression_statement "unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1);" (assignment_expression "unaff_s5 = (mbstate_t *)((int)&unaff_s5->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&unaff_s5->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s5->__count + 1)" ( (binary_expression "(int)&unaff_s5->__count + 1" (cast_expression "(int)&unaff_s5->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s5->__count" & (field_expression "unaff_s5->__count" identifier -> field_identifier))) + number_literal) )))) ;)) (expression_statement "pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1);" (assignment_expression "pmVar29 = (mbstate_t *)((int)&pmVar11->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&pmVar11->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pmVar11->__count + 1)" ( (binary_expression "(int)&pmVar11->__count + 1" (cast_expression "(int)&pmVar11->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pmVar11->__count" & (field_expression "pmVar11->__count" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if ((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6) {\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }" if (parenthesized_expression "((mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6)" ( (binary_expression "(mbstate_t *)(int)*(char *)&pmVar11->__count == unaff_s6" (cast_expression "(mbstate_t *)(int)*(char *)&pmVar11->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(char *)&pmVar11->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)&pmVar11->__count" * (cast_expression "(char *)&pmVar11->__count" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar11->__count" & (field_expression "pmVar11->__count" identifier -> field_identifier)))))) == identifier) )) (compound_statement "{\n            uVar23 = *(uchar *)((int)&needle_00->__count + 1);\n            if (uVar23 == '\0') goto LAB_0002e2ac;\n            if (*(uchar *)&pmVar29->__count == '\0') break;\n            pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);\n            if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }\n            goto LAB_0002e18c;\n          }" { (expression_statement "uVar23 = *(uchar *)((int)&needle_00->__count + 1);" (assignment_expression "uVar23 = *(uchar *)((int)&needle_00->__count + 1)" identifier = (pointer_expression "*(uchar *)((int)&needle_00->__count + 1)" * (cast_expression "(uchar *)((int)&needle_00->__count + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&needle_00->__count + 1)" ( (binary_expression "(int)&needle_00->__count + 1" (cast_expression "(int)&needle_00->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&needle_00->__count" & (field_expression "needle_00->__count" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if (uVar23 == '\0') goto LAB_0002e2ac;" if (parenthesized_expression "(uVar23 == '\0')" ( (binary_expression "uVar23 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (if_statement "if (*(uchar *)&pmVar29->__count == '\0') break;" if (parenthesized_expression "(*(uchar *)&pmVar29->__count == '\0')" ( (binary_expression "*(uchar *)&pmVar29->__count == '\0'" (pointer_expression "*(uchar *)&pmVar29->__count" * (cast_expression "(uchar *)&pmVar29->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar29->__count" & (field_expression "pmVar29->__count" identifier -> field_identifier)))) == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (expression_statement "pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2);" (assignment_expression "pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 2)" identifier = (cast_expression "(mbstate_t *)((int)&unaff_s4->__count + 2)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s4->__count + 2)" ( (binary_expression "(int)&unaff_s4->__count + 2" (cast_expression "(int)&unaff_s4->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s4->__count" & (field_expression "unaff_s4->__count" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (uVar23 == *(uchar *)&pmVar29->__count) {\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }" if (parenthesized_expression "(uVar23 == *(uchar *)&pmVar29->__count)" ( (binary_expression "uVar23 == *(uchar *)&pmVar29->__count" identifier == (pointer_expression "*(uchar *)&pmVar29->__count" * (cast_expression "(uchar *)&pmVar29->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar29->__count" & (field_expression "pmVar29->__count" identifier -> field_identifier))))) )) (compound_statement "{\n              puVar20 = (uchar *)((int)&needle_00->__count + 2);\n              pmVar24 = pmVar29;\n              do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);\n            }" { (expression_statement "puVar20 = (uchar *)((int)&needle_00->__count + 2);" (assignment_expression "puVar20 = (uchar *)((int)&needle_00->__count + 2)" identifier = (cast_expression "(uchar *)((int)&needle_00->__count + 2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&needle_00->__count + 2)" ( (binary_expression "(int)&needle_00->__count + 2" (cast_expression "(int)&needle_00->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&needle_00->__count" & (field_expression "needle_00->__count" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pmVar24 = pmVar29;" (assignment_expression "pmVar24 = pmVar29" identifier = identifier) ;) (do_statement "do {\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              } while (pmVar26 == pmVar27);" do (compound_statement "{\n                pmVar26 = (mbstate_t *)(int)(char)*puVar20;\n                pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);\n                if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;\n                puVar20 = puVar20 + 1;\n                if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;\n                pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);\n              }" { (expression_statement "pmVar26 = (mbstate_t *)(int)(char)*puVar20;" (assignment_expression "pmVar26 = (mbstate_t *)(int)(char)*puVar20" identifier = (cast_expression "(mbstate_t *)(int)(char)*puVar20" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*puVar20" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*puVar20" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*puVar20" * identifier))))) ;) (expression_statement "pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1);" (assignment_expression "pmVar24 = (mbstate_t *)((int)&pmVar24->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&pmVar24->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pmVar24->__count + 1)" ( (binary_expression "(int)&pmVar24->__count + 1" (cast_expression "(int)&pmVar24->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pmVar24->__count" & (field_expression "pmVar24->__count" identifier -> field_identifier))) + number_literal) )))) ;) (if_statement "if (pmVar26 == (mbstate_t *)0x0) goto LAB_0002e2ac;" if (parenthesized_expression "(pmVar26 == (mbstate_t *)0x0)" ( (binary_expression "pmVar26 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (expression_statement "pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count;" (assignment_expression "pmVar27 = (mbstate_t *)(int)*(char *)&pmVar24->__count" identifier = (cast_expression "(mbstate_t *)(int)*(char *)&pmVar24->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)*(char *)&pmVar24->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)&pmVar24->__count" * (cast_expression "(char *)&pmVar24->__count" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar24->__count" & (field_expression "pmVar24->__count" identifier -> field_identifier))))))) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (if_statement "if (pmVar27 == (mbstate_t *)0x0) goto LAB_0002e2ec;" if (parenthesized_expression "(pmVar27 == (mbstate_t *)0x0)" ( (binary_expression "pmVar27 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ec;" goto statement_identifier ;)) (expression_statement "pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4);" (assignment_expression "pmVar5 = (mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4)" identifier = (cast_expression "(mbstate_t *)(((int)puVar20 - (int)needle_00) + (int)unaff_s4)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((int)puVar20 - (int)needle_00) + (int)unaff_s4)" ( (binary_expression "((int)puVar20 - (int)needle_00) + (int)unaff_s4" (parenthesized_expression "((int)puVar20 - (int)needle_00)" ( (binary_expression "(int)puVar20 - (int)needle_00" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)needle_00" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)unaff_s4" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) while (parenthesized_expression "(pmVar26 == pmVar27)" ( (binary_expression "pmVar26 == pmVar27" identifier == identifier) )) ;) })) (goto_statement "goto LAB_0002e18c;" goto statement_identifier ;) })) (expression_statement "pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1);" (assignment_expression "pmVar5 = (mbstate_t *)((int)&unaff_s4->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&unaff_s4->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s4->__count + 1)" ( (binary_expression "(int)&unaff_s4->__count + 1" (cast_expression "(int)&unaff_s4->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s4->__count" & (field_expression "unaff_s4->__count" identifier -> field_identifier))) + number_literal) )))) ;) }) while (parenthesized_expression "(*(char *)((int)&pmVar11->__count + 1) != '\0')" ( (binary_expression "*(char *)((int)&pmVar11->__count + 1) != '\0'" (pointer_expression "*(char *)((int)&pmVar11->__count + 1)" * (cast_expression "(char *)((int)&pmVar11->__count + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pmVar11->__count + 1)" ( (binary_expression "(int)&pmVar11->__count + 1" (cast_expression "(int)&pmVar11->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pmVar11->__count" & (field_expression "pmVar11->__count" identifier -> field_identifier))) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) ;)) })) (labeled_statement "LAB_0002e2ec:\n      pmVar11 = (mbstate_t *)0x0;" statement_identifier : (expression_statement "pmVar11 = (mbstate_t *)0x0;" (assignment_expression "pmVar11 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) })) (labeled_statement "LAB_0002e2ac:\n    s = *(byte **)(puVar38 + -0x2c);" statement_identifier : (expression_statement "s = *(byte **)(puVar38 + -0x2c);" (assignment_expression "s = *(byte **)(puVar38 + -0x2c)" identifier = (pointer_expression "*(byte **)(puVar38 + -0x2c)" * (cast_expression "(byte **)(puVar38 + -0x2c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x2c)" ( (binary_expression "puVar38 + -0x2c" identifier + number_literal) ))))) ;)) (if_statement "if (s == (byte *)**(undefined4 **)(puVar38 + -0x154)) {\n      return SUB41(pmVar11,0);\n    }" if (parenthesized_expression "(s == (byte *)**(undefined4 **)(puVar38 + -0x154))" ( (binary_expression "s == (byte *)**(undefined4 **)(puVar38 + -0x154)" identifier == (cast_expression "(byte *)**(undefined4 **)(puVar38 + -0x154)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar38 + -0x154)" * (pointer_expression "*(undefined4 **)(puVar38 + -0x154)" * (cast_expression "(undefined4 **)(puVar38 + -0x154)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x154)" ( (binary_expression "puVar38 + -0x154" identifier + number_literal) ))))))) )) (compound_statement "{\n      return SUB41(pmVar11,0);\n    }" { (return_statement "return SUB41(pmVar11,0);" return (call_expression "SUB41(pmVar11,0)" identifier (argument_list "(pmVar11,0)" ( identifier , number_literal ))) ;) })) }) (else_clause "else {\n    bVar1 = *(byte *)&needle_00->__count;\n    haystack = puVar38 + -0x140;\n    iVar10 = *(int *)(iVar17 + -0x7c98);\n    *(undefined4 *)(puVar38 + -0x140) = 0;\n    pmVar26 = (mbstate_t *)(uint)bVar1;\n    *(undefined4 *)(puVar38 + -0x13c) = 0;\n    *(int *)(puVar38 + -0x168) = iVar10;\n    *(mbstate_t **)(puVar38 + -0x134) = needle_00;\n    puVar38[-0x144] = 0;\n    uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);\n    puVar38[-0x138] = 0;\n    if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  pcVar41 = mbsnwidth;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);\n  pcVar40 = *(code **)(pcVar36 + 0x46bd8);\n  *(undefined4 **)(puVar38 + -0x1bc) = puVar8;\n  *(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;\n  *(mbstate_t **)(puVar38 + -400) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;\n  pbVar33 = s + (int)pmVar26;\n  *(code **)(puVar38 + -0x184) = pcVar41;\n  *(mbstate_t **)(puVar38 + -0x188) = ps;\n  *(mbstate_t **)(puVar38 + -0x18c) = pwc;\n  *(mbstate_t **)(puVar38 + -0x194) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x198) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x19c) = needle_00;\n  *(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;\n  *(uchar **)(puVar38 + -0x1a8) = haystack;\n  *(mbstate_t **)(puVar38 + -0x178) = pmVar27;\n  *(undefined4 *)(puVar38 + -0x1ac) = *puVar8;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x1c8);\n  if (uVar6 < 2) {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }\nLAB_0002f060:\n  piVar22 = *(int **)(puVar38 + -0x1bc);\nLAB_0002f064:\n  string = *(char **)(puVar38 + -0x1ac);\n  if (string != (char *)*piVar22) {\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }\n  return SUB41(iVar10,0);\n}" else (compound_statement "{\n    bVar1 = *(byte *)&needle_00->__count;\n    haystack = puVar38 + -0x140;\n    iVar10 = *(int *)(iVar17 + -0x7c98);\n    *(undefined4 *)(puVar38 + -0x140) = 0;\n    pmVar26 = (mbstate_t *)(uint)bVar1;\n    *(undefined4 *)(puVar38 + -0x13c) = 0;\n    *(int *)(puVar38 + -0x168) = iVar10;\n    *(mbstate_t **)(puVar38 + -0x134) = needle_00;\n    puVar38[-0x144] = 0;\n    uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);\n    puVar38[-0x138] = 0;\n    if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }\n  pcVar36 = *(code **)(iVar17 + -0x79d8);\n  pcVar41 = mbsnwidth;\n  (*pcVar36)();\n  puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);\n  pcVar40 = *(code **)(pcVar36 + 0x46bd8);\n  *(undefined4 **)(puVar38 + -0x1bc) = puVar8;\n  *(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;\n  *(mbstate_t **)(puVar38 + -400) = unaff_s6;\n  *(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;\n  pbVar33 = s + (int)pmVar26;\n  *(code **)(puVar38 + -0x184) = pcVar41;\n  *(mbstate_t **)(puVar38 + -0x188) = ps;\n  *(mbstate_t **)(puVar38 + -0x18c) = pwc;\n  *(mbstate_t **)(puVar38 + -0x194) = unaff_s5;\n  *(mbstate_t **)(puVar38 + -0x198) = unaff_s4;\n  *(mbstate_t **)(puVar38 + -0x19c) = needle_00;\n  *(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;\n  *(uchar **)(puVar38 + -0x1a8) = haystack;\n  *(mbstate_t **)(puVar38 + -0x178) = pmVar27;\n  *(undefined4 *)(puVar38 + -0x1ac) = *puVar8;\n  uVar6 = (*pcVar40)();\n  iVar17 = *(int *)(puVar38 + -0x1c8);\n  if (uVar6 < 2) {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }\nLAB_0002f060:\n  piVar22 = *(int **)(puVar38 + -0x1bc);\nLAB_0002f064:\n  string = *(char **)(puVar38 + -0x1ac);\n  if (string != (char *)*piVar22) {\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }\n  return SUB41(iVar10,0);\n}" { (expression_statement "bVar1 = *(byte *)&needle_00->__count;" (assignment_expression "bVar1 = *(byte *)&needle_00->__count" identifier = (pointer_expression "*(byte *)&needle_00->__count" * (cast_expression "(byte *)&needle_00->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&needle_00->__count" & (field_expression "needle_00->__count" identifier -> field_identifier))))) ;) (expression_statement "haystack = puVar38 + -0x140;" (assignment_expression "haystack = puVar38 + -0x140" identifier = (binary_expression "puVar38 + -0x140" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar17 + -0x7c98);" (assignment_expression "iVar10 = *(int *)(iVar17 + -0x7c98)" identifier = (pointer_expression "*(int *)(iVar17 + -0x7c98)" * (cast_expression "(int *)(iVar17 + -0x7c98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7c98)" ( (binary_expression "iVar17 + -0x7c98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x140) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x140) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x140)" * (cast_expression "(undefined4 *)(puVar38 + -0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x140)" ( (binary_expression "puVar38 + -0x140" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar26 = (mbstate_t *)(uint)bVar1;" (assignment_expression "pmVar26 = (mbstate_t *)(uint)bVar1" identifier = (cast_expression "(mbstate_t *)(uint)bVar1" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x13c)" * (cast_expression "(undefined4 *)(puVar38 + -0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x13c)" ( (binary_expression "puVar38 + -0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar38 + -0x168) = iVar10;" (assignment_expression "*(int *)(puVar38 + -0x168) = iVar10" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x134) = needle_00;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x134) = needle_00" (pointer_expression "*(mbstate_t **)(puVar38 + -0x134)" * (cast_expression "(mbstate_t **)(puVar38 + -0x134)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x134)" ( (binary_expression "puVar38 + -0x134" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar38[-0x144] = 0;" (assignment_expression "puVar38[-0x144] = 0" (subscript_expression "puVar38[-0x144]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4);" (assignment_expression "uVar6 = *(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4)" identifier = (pointer_expression "*(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4)" * (cast_expression "(uint *)(iVar10 + (uint)(bVar1 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + (uint)(bVar1 >> 5) * 4)" ( (binary_expression "iVar10 + (uint)(bVar1 >> 5) * 4" identifier + (binary_expression "(uint)(bVar1 >> 5) * 4" (call_expression "(uint)(bVar1 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> 5)" ( (binary_expression "bVar1 >> 5" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "puVar38[-0x138] = 0;" (assignment_expression "puVar38[-0x138] = 0" (subscript_expression "puVar38[-0x138]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0) {\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }" if (parenthesized_expression "((uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar6 >> ((uint)pmVar26 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar6 >> ((uint)pmVar26 & 0x1f) & 1)" ( (binary_expression "uVar6 >> ((uint)pmVar26 & 0x1f) & 1" (binary_expression "uVar6 >> ((uint)pmVar26 & 0x1f)" identifier >> (parenthesized_expression "((uint)pmVar26 & 0x1f)" ( (binary_expression "(uint)pmVar26 & 0x1f" (cast_expression "(uint)pmVar26" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      *(int *)(puVar38 + -0x128) = (int)(char)bVar1;\n      *(undefined4 *)(puVar38 + -0x130) = 1;\n      puVar38[-300] = 1;\n      puVar38[-0x138] = 1;\n      if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }\n    iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);\n    iVar17 = *(int *)(puVar38 + -0x170);\n    if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);\n    pmVar27 = (mbstate_t *)0xb2;\n    pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);\n    s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar17 + -0x7bb0))();\n  }" { (expression_statement "*(int *)(puVar38 + -0x128) = (int)(char)bVar1;" (assignment_expression "*(int *)(puVar38 + -0x128) = (int)(char)bVar1" (pointer_expression "*(int *)(puVar38 + -0x128)" * (cast_expression "(int *)(puVar38 + -0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x128)" ( (binary_expression "puVar38 + -0x128" identifier + number_literal) )))) = (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0x130)" * (cast_expression "(undefined4 *)(puVar38 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x130)" ( (binary_expression "puVar38 + -0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar38[-300] = 1;" (assignment_expression "puVar38[-300] = 1" (subscript_expression "puVar38[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-0x138] = 1;" (assignment_expression "puVar38[-0x138] = 1" (subscript_expression "puVar38[-0x138]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((char)bVar1 != 0) {\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }" if (parenthesized_expression "((char)bVar1 != 0)" ( (binary_expression "(char)bVar1 != 0" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) != number_literal) )) (compound_statement "{\n        puVar38[-0xd4] = 0;\n        unaff_s4 = (mbstate_t *)(puVar38 + -0x108);\n        *(undefined4 *)(puVar38 + -0x108) = 0;\n        *(undefined4 *)(puVar38 + -0x15c) = 1;\n        ps = (mbstate_t *)(puVar38 + -0xd0);\n        *(undefined4 *)(puVar38 + -0xd0) = 0;\n        *(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;\n        iVar10 = *(int *)(iVar17 + -32000);\n        pwc = (mbstate_t *)(puVar38 + -0x80);\n        *(undefined4 *)(puVar38 + -0x104) = 0;\n        *(undefined4 *)(puVar38 + -0xcc) = 0;\n        *(mbstate_t **)(puVar38 + -0xfc) = needle_00;\n        *(undefined4 *)(puVar38 + -0x160) = 0;\n        *(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;\n        puVar38[-0x10c] = 0;\n        *(undefined4 *)(puVar38 + -0x150) = 0;\n        puVar38[-0x100] = 0;\n        *(mbstate_t **)(puVar38 + -0xc4) = pmVar42;\n        puVar38[-200] = 0;\n        cVar14 = puVar38[-0xd4];\n        haystack = (uchar *)(mbstate_t *)0x0;\n        pmVar32 = pmVar42;\n        do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;\n    }" { (expression_statement "puVar38[-0xd4] = 0;" (assignment_expression "puVar38[-0xd4] = 0" (subscript_expression "puVar38[-0xd4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s4 = (mbstate_t *)(puVar38 + -0x108);" (assignment_expression "unaff_s4 = (mbstate_t *)(puVar38 + -0x108)" identifier = (cast_expression "(mbstate_t *)(puVar38 + -0x108)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x108)" ( (binary_expression "puVar38 + -0x108" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x108) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x108) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x108)" * (cast_expression "(undefined4 *)(puVar38 + -0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x108)" ( (binary_expression "puVar38 + -0x108" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0x15c)" * (cast_expression "(undefined4 *)(puVar38 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x15c)" ( (binary_expression "puVar38 + -0x15c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "ps = (mbstate_t *)(puVar38 + -0xd0);" (assignment_expression "ps = (mbstate_t *)(puVar38 + -0xd0)" identifier = (cast_expression "(mbstate_t *)(puVar38 + -0xd0)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xd0)" ( (binary_expression "puVar38 + -0xd0" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0xd0) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0xd0) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0xd0)" * (cast_expression "(undefined4 *)(puVar38 + -0xd0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xd0)" ( (binary_expression "puVar38 + -0xd0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4;" (assignment_expression "*(undefined1 **)(puVar38 + -0x158) = puVar38 + -0xa4" (pointer_expression "*(undefined1 **)(puVar38 + -0x158)" * (cast_expression "(undefined1 **)(puVar38 + -0x158)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x158)" ( (binary_expression "puVar38 + -0x158" identifier + number_literal) )))) = (binary_expression "puVar38 + -0xa4" identifier + number_literal)) ;) (expression_statement "iVar10 = *(int *)(iVar17 + -32000);" (assignment_expression "iVar10 = *(int *)(iVar17 + -32000)" identifier = (pointer_expression "*(int *)(iVar17 + -32000)" * (cast_expression "(int *)(iVar17 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -32000)" ( (binary_expression "iVar17 + -32000" identifier + number_literal) ))))) ;) (expression_statement "pwc = (mbstate_t *)(puVar38 + -0x80);" (assignment_expression "pwc = (mbstate_t *)(puVar38 + -0x80)" identifier = (cast_expression "(mbstate_t *)(puVar38 + -0x80)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x80)" ( (binary_expression "puVar38 + -0x80" identifier + number_literal) )))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x104) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x104) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x104)" * (cast_expression "(undefined4 *)(puVar38 + -0x104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x104)" ( (binary_expression "puVar38 + -0x104" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar38 + -0xcc) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0xcc) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0xcc)" * (cast_expression "(undefined4 *)(puVar38 + -0xcc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xcc)" ( (binary_expression "puVar38 + -0xcc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0xfc) = needle_00;" (assignment_expression "*(mbstate_t **)(puVar38 + -0xfc) = needle_00" (pointer_expression "*(mbstate_t **)(puVar38 + -0xfc)" * (cast_expression "(mbstate_t **)(puVar38 + -0xfc)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xfc)" ( (binary_expression "puVar38 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x160) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x160) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x160)" * (cast_expression "(undefined4 *)(puVar38 + -0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x160)" ( (binary_expression "puVar38 + -0x160" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar38 + -0x14c) = iVar10 + -0x2954;" (assignment_expression "*(int *)(puVar38 + -0x14c) = iVar10 + -0x2954" (pointer_expression "*(int *)(puVar38 + -0x14c)" * (cast_expression "(int *)(puVar38 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x14c)" ( (binary_expression "puVar38 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar10 + -0x2954" identifier + number_literal)) ;) (expression_statement "puVar38[-0x10c] = 0;" (assignment_expression "puVar38[-0x10c] = 0" (subscript_expression "puVar38[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x150) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x150) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x150)" * (cast_expression "(undefined4 *)(puVar38 + -0x150)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x150)" ( (binary_expression "puVar38 + -0x150" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar38[-0x100] = 0;" (assignment_expression "puVar38[-0x100] = 0" (subscript_expression "puVar38[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0xc4) = pmVar42;" (assignment_expression "*(mbstate_t **)(puVar38 + -0xc4) = pmVar42" (pointer_expression "*(mbstate_t **)(puVar38 + -0xc4)" * (cast_expression "(mbstate_t **)(puVar38 + -0xc4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc4)" ( (binary_expression "puVar38 + -0xc4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar38[-200] = 0;" (assignment_expression "puVar38[-200] = 0" (subscript_expression "puVar38[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "cVar14 = puVar38[-0xd4];" (assignment_expression "cVar14 = puVar38[-0xd4]" identifier = (subscript_expression "puVar38[-0xd4]" identifier [ number_literal ])) ;) (expression_statement "haystack = (uchar *)(mbstate_t *)0x0;" (assignment_expression "haystack = (uchar *)(mbstate_t *)0x0" identifier = (cast_expression "(uchar *)(mbstate_t *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "pmVar32 = pmVar42;" (assignment_expression "pmVar32 = pmVar42" identifier = identifier) ;) (ERROR "do {\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }\n      pmVar32 = (mbstate_t *)0x0;\n      ps = (mbstate_t *)(puVar37 + -0x128);\n      goto LAB_0002e2ac;" do (compound_statement "{\n          if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }\n          if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }\n          *(undefined4 *)(puVar38 + -0xc0) = 1;\n          pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n          puVar38[-0xbc] = 1;\n          puVar38[-200] = 1;\n          *(mbstate_t **)(puVar38 + -0xb8) = pmVar32;\n          pmVar11 = (mbstate_t *)0x0;\n          if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n          if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        } while( true );\n      }" { (if_statement "if (cVar14 != '\0') {\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }" if (parenthesized_expression "(cVar14 != '\0')" ( (binary_expression "cVar14 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();\n            sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);\n          }" { (labeled_statement "LAB_0002e6f4:\n            sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pmVar32,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pmVar32,sVar7)" identifier = (call_expression "strnlen1((char *)pmVar32,sVar7)" identifier (argument_list "((char *)pmVar32,sVar7)" ( (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps);" (call_expression "rpl_mbrtowc((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps)" identifier (argument_list "((wchar_t *)(puVar38 + -0xb8),(char *)pmVar32,sVar7,ps)" ( (cast_expression "(wchar_t *)(puVar38 + -0xb8)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xb8)" ( (binary_expression "puVar38 + -0xb8" identifier + number_literal) ))) , (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) })) (if_statement "if ((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)\n               >> (*(byte *)&pmVar32->__count & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar38 + -0x168) + (uint)(*(byte *)&pmVar32->__count >> 5) * 4" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pmVar32->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pmVar32->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pmVar32->__count >> 5)" ( (binary_expression "*(byte *)&pmVar32->__count >> 5" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*(byte *)&pmVar32->__count & 0x1f)" ( (binary_expression "*(byte *)&pmVar32->__count & 0x1f" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar10 = (**(code **)(iVar17 + -0x799c))(ps);\n            iVar17 = *(int *)(puVar38 + -0x170);\n            if (iVar10 == 0) goto LAB_0002ef3c;\n            puVar38[-0xd4] = 1;\n            goto LAB_0002e6f4;\n          }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(ps);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(ps)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(ps)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(ps)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 == 0) goto LAB_0002ef3c;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;)) (expression_statement "puVar38[-0xd4] = 1;" (assignment_expression "puVar38[-0xd4] = 1" (subscript_expression "puVar38[-0xd4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e6f4;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar38 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0xc0)" * (cast_expression "(undefined4 *)(puVar38 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xc0)" ( (binary_expression "puVar38 + -0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;" (assignment_expression "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" identifier = (cast_expression "(mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&pmVar32->__count" * (cast_expression "(uchar *)&pmVar32->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))))))) ;) (expression_statement "puVar38[-0xbc] = 1;" (assignment_expression "puVar38[-0xbc] = 1" (subscript_expression "puVar38[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-200] = 1;" (assignment_expression "puVar38[-200] = 1" (subscript_expression "puVar38[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0xb8) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0xb8) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0xb8)" * (cast_expression "(mbstate_t **)(puVar38 + -0xb8)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xb8)" ( (binary_expression "puVar38 + -0xb8" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar11 = (mbstate_t *)0x0;" (assignment_expression "pmVar11 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;" if (parenthesized_expression "(pmVar32 == (mbstate_t *)0x0)" ( (binary_expression "pmVar32 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (if_statement "if ((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)) {\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }\n          else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        }" if (parenthesized_expression "((*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10))" ( (binary_expression "(*(int *)(puVar38 + -0x15c) == 0) || (*(uint *)(puVar38 + -0x160) < 10)" (parenthesized_expression "(*(int *)(puVar38 + -0x15c) == 0)" ( (binary_expression "*(int *)(puVar38 + -0x15c) == 0" (pointer_expression "*(int *)(puVar38 + -0x15c)" * (cast_expression "(int *)(puVar38 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x15c)" ( (binary_expression "puVar38 + -0x15c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(uint *)(puVar38 + -0x160) < 10)" ( (binary_expression "*(uint *)(puVar38 + -0x160) < 10" (pointer_expression "*(uint *)(puVar38 + -0x160)" * (cast_expression "(uint *)(puVar38 + -0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x160)" ( (binary_expression "puVar38 + -0x160" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\nLAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            if (puVar38[-300] == '\0') goto LAB_0002e89c;\n            pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;\nLAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            haystack = (uchar *)pmVar32;\nLAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\n            pmVar11 = (mbstate_t *)haystack;\n          }" { (labeled_statement "LAB_0002e448:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);" (assignment_expression "unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0xc0)" * (cast_expression "(mbstate_t **)(puVar38 + -0xc0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc0)" ( (binary_expression "puVar38 + -0xc0" identifier + number_literal) ))))) ;)) (if_statement "if (puVar38[-300] == '\0') goto LAB_0002e89c;" if (parenthesized_expression "(puVar38[-300] == '\0')" ( (binary_expression "puVar38[-300] == '\0'" (subscript_expression "puVar38[-300]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e89c;" goto statement_identifier ;)) (expression_statement "pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);" (assignment_expression "pmVar32 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((mbstate_t *)haystack)->__count + 1)" ( (binary_expression "(int)&((mbstate_t *)haystack)->__count + 1" (cast_expression "(int)&((mbstate_t *)haystack)->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((mbstate_t *)haystack)->__count" & (field_expression "((mbstate_t *)haystack)->__count" (parenthesized_expression "((mbstate_t *)haystack)" ( (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) ;) (if_statement "if (*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)) goto LAB_0002e464;" if (parenthesized_expression "(*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128))" ( (binary_expression "*(int *)(puVar38 + -0xb8) == *(int *)(puVar38 + -0x128)" (pointer_expression "*(int *)(puVar38 + -0xb8)" * (cast_expression "(int *)(puVar38 + -0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xb8)" ( (binary_expression "puVar38 + -0xb8" identifier + number_literal) )))) == (pointer_expression "*(int *)(puVar38 + -0x128)" * (cast_expression "(int *)(puVar38 + -0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x128)" ( (binary_expression "puVar38 + -0x128" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e464;" goto statement_identifier ;)) (labeled_statement "LAB_0002e6c8:\n            iVar10 = *(int *)(puVar38 + -0xc4);" statement_identifier : (expression_statement "iVar10 = *(int *)(puVar38 + -0xc4);" (assignment_expression "iVar10 = *(int *)(puVar38 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar38 + -0xc4)" * (cast_expression "(int *)(puVar38 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xc4)" ( (binary_expression "puVar38 + -0xc4" identifier + number_literal) ))))) ;)) (expression_statement "haystack = (uchar *)pmVar32;" (assignment_expression "haystack = (uchar *)pmVar32" identifier = (cast_expression "(uchar *)pmVar32" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0002e6cc:\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);" (assignment_expression "unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0xc0)" * (cast_expression "(mbstate_t **)(puVar38 + -0xc0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc0)" ( (binary_expression "puVar38 + -0xc0" identifier + number_literal) ))))) ;)) (expression_statement "pmVar11 = (mbstate_t *)haystack;" (assignment_expression "pmVar11 = (mbstate_t *)haystack" identifier = (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        }" else (compound_statement "{\n            uVar6 = *(uint *)(puVar38 + -0x15c);\n            if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }\n          pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);\n          puVar38[-200] = 0;\n          *(mbstate_t **)(puVar38 + -0xc4) = pmVar32;\n          *(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;\n          cVar14 = puVar38[-0xd4];\n          haystack = (uchar *)pmVar11;\n        }" { (expression_statement "uVar6 = *(uint *)(puVar38 + -0x15c);" (assignment_expression "uVar6 = *(uint *)(puVar38 + -0x15c)" identifier = (pointer_expression "*(uint *)(puVar38 + -0x15c)" * (cast_expression "(uint *)(puVar38 + -0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x15c)" ( (binary_expression "puVar38 + -0x15c" identifier + number_literal) ))))) ;) (if_statement "if (haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)) {\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }\n            else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }" if (parenthesized_expression "(haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5))" ( (binary_expression "haystack < (mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)" identifier < (cast_expression "(mbstate_t *)(*(int *)(puVar38 + -0x160) * 5)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x160) * 5)" ( (binary_expression "*(int *)(puVar38 + -0x160) * 5" (pointer_expression "*(int *)(puVar38 + -0x160)" * (cast_expression "(int *)(puVar38 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x160)" ( (binary_expression "puVar38 + -0x160" identifier + number_literal) )))) * number_literal) )))) )) (compound_statement "{\n              *(undefined4 *)(puVar38 + -0x15c) = 1;\n            }" { (expression_statement "*(undefined4 *)(puVar38 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0x15c)" * (cast_expression "(undefined4 *)(puVar38 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x15c)" ( (binary_expression "puVar38 + -0x15c" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }" else (compound_statement "{\n              unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));\n              if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }\n            if (uVar6 != 0) goto LAB_0002e448;\n            unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);\nLAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);\n            iVar10 = *(int *)(puVar38 + -0xc4);\n            if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }\n          }" { (expression_statement "unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150));" (assignment_expression "unaff_s5 = (mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150))" identifier = (cast_expression "(mbstate_t *)((int)haystack - *(int *)(puVar38 + -0x150))" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)haystack - *(int *)(puVar38 + -0x150))" ( (binary_expression "(int)haystack - *(int *)(puVar38 + -0x150)" (cast_expression "(int)haystack" ( (type_descriptor "int" primitive_type) ) identifier) - (pointer_expression "*(int *)(puVar38 + -0x150)" * (cast_expression "(int *)(puVar38 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x150)" ( (binary_expression "puVar38 + -0x150" identifier + number_literal) ))))) )))) ;) (if_statement "if (unaff_s5 == (mbstate_t *)0x0) {\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }\n              else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }" if (parenthesized_expression "(unaff_s5 == (mbstate_t *)0x0)" ( (binary_expression "unaff_s5 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;\n                if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }\nLAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n                *(undefined4 *)(puVar38 + -0x15c) = 1;\n              }" { (if_statement "if (puVar38[-0x100] == '\0') goto LAB_0002ed2c;" if (parenthesized_expression "(puVar38[-0x100] == '\0')" ( (binary_expression "puVar38[-0x100] == '\0'" (subscript_expression "puVar38[-0x100]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ed2c;" goto statement_identifier ;)) (if_statement "if (puVar38[-0xf4] != '\0') {\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }" if (parenthesized_expression "(puVar38[-0xf4] != '\0')" ( (binary_expression "puVar38[-0xf4] != '\0'" (subscript_expression "puVar38[-0xf4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);\n                  goto LAB_0002ed78;\n                }" { (expression_statement "pmVar11 = *(mbstate_t **)(puVar38 + -0xf0);" (assignment_expression "pmVar11 = *(mbstate_t **)(puVar38 + -0xf0)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0xf0)" * (cast_expression "(mbstate_t **)(puVar38 + -0xf0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xf0)" ( (binary_expression "puVar38 + -0xf0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002ed78;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ed84:\n                uVar6 = (uint)(byte)puVar38[-0xbc];" statement_identifier : (expression_statement "uVar6 = (uint)(byte)puVar38[-0xbc];" (assignment_expression "uVar6 = (uint)(byte)puVar38[-0xbc]" identifier = (cast_expression "(uint)(byte)puVar38[-0xbc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar38[-0xbc]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar38[-0xbc]" identifier [ number_literal ])))) ;)) (expression_statement "*(uchar **)(puVar38 + -0x150) = haystack;" (assignment_expression "*(uchar **)(puVar38 + -0x150) = haystack" (pointer_expression "*(uchar **)(puVar38 + -0x150)" * (cast_expression "(uchar **)(puVar38 + -0x150)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x150)" ( (binary_expression "puVar38 + -0x150" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0x15c)" * (cast_expression "(undefined4 *)(puVar38 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x15c)" ( (binary_expression "puVar38 + -0x15c" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }" else (compound_statement "{\n                if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }\n                iVar10 = *(int *)(puVar38 + -0xf0);\n                if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;\n                do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }\n            }" { (if_statement "if (puVar38[-0x100] == '\0') {\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }" if (parenthesized_expression "(puVar38[-0x100] == '\0')" ( (binary_expression "puVar38[-0x100] == '\0'" (subscript_expression "puVar38[-0x100]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);\n                  goto LAB_0002ea08;\n                }" { (expression_statement "pmVar32 = *(mbstate_t **)(puVar38 + -0xfc);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar38 + -0xfc)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0xfc)" * (cast_expression "(mbstate_t **)(puVar38 + -0xfc)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xfc)" ( (binary_expression "puVar38 + -0xfc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002ea08;" goto statement_identifier ;) })) (expression_statement "iVar10 = *(int *)(puVar38 + -0xf0);" (assignment_expression "iVar10 = *(int *)(puVar38 + -0xf0)" identifier = (pointer_expression "*(int *)(puVar38 + -0xf0)" * (cast_expression "(int *)(puVar38 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xf0)" ( (binary_expression "puVar38 + -0xf0" identifier + number_literal) ))))) ;) (if_statement "if (puVar38[-0xf4] != '\0') goto LAB_0002ea50;" if (parenthesized_expression "(puVar38[-0xf4] != '\0')" ( (binary_expression "puVar38[-0xf4] != '\0'" (subscript_expression "puVar38[-0xf4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ea50;" goto statement_identifier ;)) (ERROR "do {\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }" do (compound_statement "{\n                  unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);\n                  puVar38[-0x100] = 0;\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));\n                  *(mbstate_t **)(puVar38 + -0xfc) = pmVar32;\n                  unaff_s6 = pmVar32;\n                  if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  iVar10 = (int)(char)*(uchar *)&pmVar32->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(int *)(puVar38 + -0xf0) = iVar10;\nLAB_0002ea50:\n                } while (iVar10 != 0);\n                pcVar36 = *(code **)(puVar38 + -0x14c);\n                pmVar32 = (mbstate_t *)0x0;\n                pmVar11 = (mbstate_t *)0x0;\n                if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }\n                pmVar27 = (mbstate_t *)(puVar38 + -0x148);\n                pmVar26 = needle_00;\n                iVar10 = (*pcVar36)(pmVar42);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                *(int *)(puVar38 + -0x15c) = iVar10;\n                pmVar32 = pmVar11;\n                if (iVar10 != 0) goto LAB_0002ef34;\n                uVar6 = (uint)(byte)puVar38[-0xbc];\n                *(uchar **)(puVar38 + -0x150) = haystack;\n              }" { (expression_statement "unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3);" (assignment_expression "unaff_s5 = (mbstate_t *)((int)&unaff_s5[-1].__value + 3)" identifier = (cast_expression "(mbstate_t *)((int)&unaff_s5[-1].__value + 3)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s5[-1].__value + 3)" ( (binary_expression "(int)&unaff_s5[-1].__value + 3" (cast_expression "(int)&unaff_s5[-1].__value" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s5[-1].__value" & (field_expression "unaff_s5[-1].__value" (subscript_expression "unaff_s5[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "puVar38[-0x100] = 0;" (assignment_expression "puVar38[-0x100] = 0" (subscript_expression "puVar38[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8));" (assignment_expression "pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8))" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8))" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8))" ( (binary_expression "*(int *)(puVar38 + -0xfc) + *(int *)(puVar38 + -0xf8)" (pointer_expression "*(int *)(puVar38 + -0xfc)" * (cast_expression "(int *)(puVar38 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xfc)" ( (binary_expression "puVar38 + -0xfc" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar38 + -0xf8)" * (cast_expression "(int *)(puVar38 + -0xf8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xf8)" ( (binary_expression "puVar38 + -0xf8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0xfc) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0xfc) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0xfc)" * (cast_expression "(mbstate_t **)(puVar38 + -0xfc)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xfc)" ( (binary_expression "puVar38 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s6 = pmVar32;" (assignment_expression "unaff_s6 = pmVar32" identifier = identifier) ;) (if_statement "if (unaff_s5 == (mbstate_t *)0x0) goto LAB_0002ed30;" if (parenthesized_expression "(unaff_s5 == (mbstate_t *)0x0)" ( (binary_expression "unaff_s5 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed30;" goto statement_identifier ;)) (labeled_statement "LAB_0002ea08:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }" statement_identifier : (if_statement "if (puVar38[-0x10c] != '\0') {\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }" if (parenthesized_expression "(puVar38[-0x10c] != '\0')" ( (binary_expression "puVar38[-0x10c] != '\0'" (subscript_expression "puVar38[-0x10c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);\n                  }" { (labeled_statement "LAB_0002eb98:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pmVar32,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pmVar32,sVar7)" identifier = (call_expression "strnlen1((char *)pmVar32,sVar7)" identifier (argument_list "((char *)pmVar32,sVar7)" ( (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4);" (call_expression "rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4)" identifier (argument_list "((wchar_t *)(puVar38 + -0xf0),(char *)pmVar32,sVar7,unaff_s4)" ( (cast_expression "(wchar_t *)(puVar38 + -0xf0)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xf0)" ( (binary_expression "puVar38 + -0xf0" identifier + number_literal) ))) , (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) }))) (if_statement "if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                       (*(byte *)&pmVar32->__count & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&pmVar32->__count >> 5) * 4" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pmVar32->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pmVar32->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pmVar32->__count >> 5)" ( (binary_expression "*(byte *)&pmVar32->__count >> 5" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*(byte *)&pmVar32->__count & 0x1f)" ( (binary_expression "*(byte *)&pmVar32->__count & 0x1f" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }\n                    goto LAB_0002ef3c;\n                  }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002eb98;\n                    }" { (expression_statement "puVar38[-0x10c] = 1;" (assignment_expression "puVar38[-0x10c] = 1" (subscript_expression "puVar38[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002eb98;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar38 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0xf8)" * (cast_expression "(undefined4 *)(puVar38 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xf8)" ( (binary_expression "puVar38 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar10 = (int)(char)*(uchar *)&pmVar32->__count;" (assignment_expression "iVar10 = (int)(char)*(uchar *)&pmVar32->__count" identifier = (cast_expression "(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&pmVar32->__count" * (cast_expression "(uchar *)&pmVar32->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))))))) ;) (expression_statement "puVar38[-0xf4] = 1;" (assignment_expression "puVar38[-0xf4] = 1" (subscript_expression "puVar38[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-0x100] = 1;" (assignment_expression "puVar38[-0x100] = 1" (subscript_expression "puVar38[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar38 + -0xf0) = iVar10;" (assignment_expression "*(int *)(puVar38 + -0xf0) = iVar10" (pointer_expression "*(int *)(puVar38 + -0xf0)" * (cast_expression "(int *)(puVar38 + -0xf0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xf0)" ( (binary_expression "puVar38 + -0xf0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ea50:\n                } while (iVar10 != 0);" statement_identifier : (ERROR "}" }) (while_statement "while (iVar10 != 0);" while (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (expression_statement ";" ;))) (expression_statement "pcVar36 = *(code **)(puVar38 + -0x14c);" (assignment_expression "pcVar36 = *(code **)(puVar38 + -0x14c)" identifier = (pointer_expression "*(code **)(puVar38 + -0x14c)" * (cast_expression "(code **)(puVar38 + -0x14c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x14c)" ( (binary_expression "puVar38 + -0x14c" identifier + number_literal) ))))) ;) (expression_statement "pmVar32 = (mbstate_t *)0x0;" (assignment_expression "pmVar32 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pmVar11 = (mbstate_t *)0x0;" (assignment_expression "pmVar11 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar38[-0x100] == '\0') {\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }" if (parenthesized_expression "(puVar38[-0x100] == '\0')" ( (binary_expression "puVar38[-0x100] == '\0'" (subscript_expression "puVar38[-0x100]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);\nLAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }\n                  if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }\n                  *(undefined4 *)(puVar38 + -0xf8) = 1;\n                  pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;\n                  puVar38[-0xf4] = 1;\n                  puVar38[-0x100] = 1;\n                  *(mbstate_t **)(puVar38 + -0xf0) = pmVar11;\nLAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);\n                  if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;\n                }" { (labeled_statement "LAB_0002ed2c:\n                  unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);" statement_identifier : (expression_statement "unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc);" (assignment_expression "unaff_s6 = *(mbstate_t **)(puVar38 + -0xfc)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0xfc)" * (cast_expression "(mbstate_t **)(puVar38 + -0xfc)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xfc)" ( (binary_expression "puVar38 + -0xfc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002ed30:\n                  if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }" statement_identifier : (if_statement "if (puVar38[-0x10c] != '\0') {\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }" if (parenthesized_expression "(puVar38[-0x10c] != '\0')" ( (binary_expression "puVar38[-0x10c] != '\0'" (subscript_expression "puVar38[-0x10c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                    sVar7 = strnlen1((char *)unaff_s6,sVar7);\n                    /* WARNING: Subroutine does not return */\n                    rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);\n                  }" { (labeled_statement "LAB_0002ee14:\n                    sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)unaff_s6,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)unaff_s6,sVar7)" identifier = (call_expression "strnlen1((char *)unaff_s6,sVar7)" identifier (argument_list "((char *)unaff_s6,sVar7)" ( (cast_expression "(char *)unaff_s6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4);" (call_expression "rpl_mbrtowc((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4)" identifier (argument_list "((wchar_t *)(puVar38 + -0xf0),(char *)unaff_s6,sVar7,unaff_s4)" ( (cast_expression "(wchar_t *)(puVar38 + -0xf0)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xf0)" ( (binary_expression "puVar38 + -0xf0" identifier + number_literal) ))) , (cast_expression "(char *)unaff_s6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) }))) (if_statement "if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0) {\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4) >>\n                       (*(byte *)&unaff_s6->__count & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar38 + -0x168) +\n                                (uint)(*(byte *)&unaff_s6->__count >> 5) * 4" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&unaff_s6->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&unaff_s6->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&unaff_s6->__count >> 5)" ( (binary_expression "*(byte *)&unaff_s6->__count >> 5" (pointer_expression "*(byte *)&unaff_s6->__count" * (cast_expression "(byte *)&unaff_s6->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s6->__count" & (field_expression "unaff_s6->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*(byte *)&unaff_s6->__count & 0x1f)" ( (binary_expression "*(byte *)&unaff_s6->__count & 0x1f" (pointer_expression "*(byte *)&unaff_s6->__count" * (cast_expression "(byte *)&unaff_s6->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s6->__count" & (field_expression "unaff_s6->__count" identifier -> field_identifier)))) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);\n                    iVar17 = *(int *)(puVar38 + -0x170);\n                    if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }\n                    goto LAB_0002ef3c;\n                  }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s4)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                      puVar38[-0x10c] = 1;\n                      goto LAB_0002ee14;\n                    }" { (expression_statement "puVar38[-0x10c] = 1;" (assignment_expression "puVar38[-0x10c] = 1" (subscript_expression "puVar38[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ee14;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar38 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0xf8)" * (cast_expression "(undefined4 *)(puVar38 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xf8)" ( (binary_expression "puVar38 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count;" (assignment_expression "pmVar11 = (mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count" identifier = (cast_expression "(mbstate_t *)(int)(char)*(uchar *)&unaff_s6->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*(uchar *)&unaff_s6->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&unaff_s6->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&unaff_s6->__count" * (cast_expression "(uchar *)&unaff_s6->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s6->__count" & (field_expression "unaff_s6->__count" identifier -> field_identifier)))))))) ;) (expression_statement "puVar38[-0xf4] = 1;" (assignment_expression "puVar38[-0xf4] = 1" (subscript_expression "puVar38[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-0x100] = 1;" (assignment_expression "puVar38[-0x100] = 1" (subscript_expression "puVar38[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0xf0) = pmVar11;" (assignment_expression "*(mbstate_t **)(puVar38 + -0xf0) = pmVar11" (pointer_expression "*(mbstate_t **)(puVar38 + -0xf0)" * (cast_expression "(mbstate_t **)(puVar38 + -0xf0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xf0)" ( (binary_expression "puVar38 + -0xf0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ed78:\n                  pcVar36 = *(code **)(puVar38 + -0x14c);" statement_identifier : (expression_statement "pcVar36 = *(code **)(puVar38 + -0x14c);" (assignment_expression "pcVar36 = *(code **)(puVar38 + -0x14c)" identifier = (pointer_expression "*(code **)(puVar38 + -0x14c)" * (cast_expression "(code **)(puVar38 + -0x14c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x14c)" ( (binary_expression "puVar38 + -0x14c" identifier + number_literal) ))))) ;)) (if_statement "if (pmVar11 != (mbstate_t *)0x0) goto LAB_0002ed84;" if (parenthesized_expression "(pmVar11 != (mbstate_t *)0x0)" ( (binary_expression "pmVar11 != (mbstate_t *)0x0" identifier != (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed84;" goto statement_identifier ;)) })) (expression_statement "pmVar27 = (mbstate_t *)(puVar38 + -0x148);" (assignment_expression "pmVar27 = (mbstate_t *)(puVar38 + -0x148)" identifier = (cast_expression "(mbstate_t *)(puVar38 + -0x148)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x148)" ( (binary_expression "puVar38 + -0x148" identifier + number_literal) )))) ;) (expression_statement "pmVar26 = needle_00;" (assignment_expression "pmVar26 = needle_00" identifier = identifier) ;) (expression_statement "iVar10 = (*pcVar36)(pmVar42);" (assignment_expression "iVar10 = (*pcVar36)(pmVar42)" identifier = (call_expression "(*pcVar36)(pmVar42)" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "(pmVar42)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar38 + -0x15c) = iVar10;" (assignment_expression "*(int *)(puVar38 + -0x15c) = iVar10" (pointer_expression "*(int *)(puVar38 + -0x15c)" * (cast_expression "(int *)(puVar38 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x15c)" ( (binary_expression "puVar38 + -0x15c" identifier + number_literal) )))) = identifier) ;) (expression_statement "pmVar32 = pmVar11;" (assignment_expression "pmVar32 = pmVar11" identifier = identifier) ;) (if_statement "if (iVar10 != 0) goto LAB_0002ef34;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002ef34;" goto statement_identifier ;)) (expression_statement "uVar6 = (uint)(byte)puVar38[-0xbc];" (assignment_expression "uVar6 = (uint)(byte)puVar38[-0xbc]" identifier = (cast_expression "(uint)(byte)puVar38[-0xbc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar38[-0xbc]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar38[-0xbc]" identifier [ number_literal ])))) ;) (expression_statement "*(uchar **)(puVar38 + -0x150) = haystack;" (assignment_expression "*(uchar **)(puVar38 + -0x150) = haystack" (pointer_expression "*(uchar **)(puVar38 + -0x150)" * (cast_expression "(uchar **)(puVar38 + -0x150)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x150)" ( (binary_expression "puVar38 + -0x150" identifier + number_literal) )))) = identifier) ;) })) }))) (if_statement "if (uVar6 != 0) goto LAB_0002e448;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002e448;" goto statement_identifier ;)) (expression_statement "unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0);" (assignment_expression "unaff_s5 = *(mbstate_t **)(puVar38 + -0xc0)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0xc0)" * (cast_expression "(mbstate_t **)(puVar38 + -0xc0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc0)" ( (binary_expression "puVar38 + -0xc0" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002e89c:\n            pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);" statement_identifier : (expression_statement "pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1);" (assignment_expression "pmVar11 = (mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1)" identifier = (cast_expression "(mbstate_t *)((int)&((mbstate_t *)haystack)->__count + 1)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((mbstate_t *)haystack)->__count + 1)" ( (binary_expression "(int)&((mbstate_t *)haystack)->__count + 1" (cast_expression "(int)&((mbstate_t *)haystack)->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((mbstate_t *)haystack)->__count" & (field_expression "((mbstate_t *)haystack)->__count" (parenthesized_expression "((mbstate_t *)haystack)" ( (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) ;)) (expression_statement "iVar10 = *(int *)(puVar38 + -0xc4);" (assignment_expression "iVar10 = *(int *)(puVar38 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar38 + -0xc4)" * (cast_expression "(int *)(puVar38 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xc4)" ( (binary_expression "puVar38 + -0xc4" identifier + number_literal) ))))) ;) (if_statement "if (unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)) {\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }" if (parenthesized_expression "(unaff_s5 == *(mbstate_t **)(puVar38 + -0x130))" ( (binary_expression "unaff_s5 == *(mbstate_t **)(puVar38 + -0x130)" identifier == (pointer_expression "*(mbstate_t **)(puVar38 + -0x130)" * (cast_expression "(mbstate_t **)(puVar38 + -0x130)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x130)" ( (binary_expression "puVar38 + -0x130" identifier + number_literal) ))))) )) (compound_statement "{\n              pmVar26 = *(mbstate_t **)(puVar38 + -0x134);\n              pmVar27 = unaff_s5;\n              iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);\n              iVar17 = *(int *)(puVar38 + -0x170);\n              if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }\n            }" { (expression_statement "pmVar26 = *(mbstate_t **)(puVar38 + -0x134);" (assignment_expression "pmVar26 = *(mbstate_t **)(puVar38 + -0x134)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x134)" * (cast_expression "(mbstate_t **)(puVar38 + -0x134)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x134)" ( (binary_expression "puVar38 + -0x134" identifier + number_literal) ))))) ;) (expression_statement "pmVar27 = unaff_s5;" (assignment_expression "pmVar27 = unaff_s5" identifier = identifier) ;) (expression_statement "iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10);" (assignment_expression "iVar9 = (**(code **)(iVar17 + -0x79c0))(iVar10)" identifier = (call_expression "(**(code **)(iVar17 + -0x79c0))(iVar10)" (parenthesized_expression "(**(code **)(iVar17 + -0x79c0))" ( (pointer_expression "**(code **)(iVar17 + -0x79c0)" * (pointer_expression "*(code **)(iVar17 + -0x79c0)" * (cast_expression "(code **)(iVar17 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x79c0)" ( (binary_expression "iVar17 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(iVar10)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);\n                puVar4 = (undefined4 *)(puVar38 + -0x9c);\n                do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);\n                bVar1 = *(byte *)&needle_00->__count;\n                *(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;\n                pmVar27 = (mbstate_t *)*puVar25;\n                puVar21[5] = puVar25[1];\n                puVar21[4] = pmVar27;\n                puVar38[-0x90] = 0;\n                *(mbstate_t **)(puVar38 + -0x54) = needle_00;\n                puVar38[-100] = 0;\n                uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);\n                *(undefined4 *)(puVar38 + -0x60) = 0;\n                *(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                *(undefined4 *)(puVar38 + -0x5c) = 0;\n                puVar38[-0x58] = 0;\n                if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }\n                pmVar32 = *(mbstate_t **)(puVar38 + -0x164);\n                iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);\n                iVar17 = *(int *)(puVar38 + -0x170);\n                haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }\n                goto LAB_0002ef3c;\n              }" { (labeled_statement "LAB_0002e464:\n                puVar8 = (undefined4 *)(puVar38 + -0xd4);" statement_identifier : (expression_statement "puVar8 = (undefined4 *)(puVar38 + -0xd4);" (assignment_expression "puVar8 = (undefined4 *)(puVar38 + -0xd4)" identifier = (cast_expression "(undefined4 *)(puVar38 + -0xd4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xd4)" ( (binary_expression "puVar38 + -0xd4" identifier + number_literal) )))) ;)) (expression_statement "puVar4 = (undefined4 *)(puVar38 + -0x9c);" (assignment_expression "puVar4 = (undefined4 *)(puVar38 + -0x9c)" identifier = (cast_expression "(undefined4 *)(puVar38 + -0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x9c)" ( (binary_expression "puVar38 + -0x9c" identifier + number_literal) )))) ;) (do_statement "do {\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                } while (puVar12 != puVar25);" do (compound_statement "{\n                  puVar21 = puVar4;\n                  puVar12 = puVar8 + 4;\n                  uVar18 = puVar8[3];\n                  uVar28 = puVar8[1];\n                  uVar19 = puVar8[2];\n                  *puVar21 = *puVar8;\n                  puVar21[1] = uVar28;\n                  puVar21[2] = uVar19;\n                  puVar21[3] = uVar18;\n                  puVar25 = *(undefined4 **)(puVar38 + -0x158);\n                  puVar8 = puVar12;\n                  puVar4 = puVar21 + 4;\n                }" { (expression_statement "puVar21 = puVar4;" (assignment_expression "puVar21 = puVar4" identifier = identifier) ;) (expression_statement "puVar12 = puVar8 + 4;" (assignment_expression "puVar12 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) (expression_statement "uVar18 = puVar8[3];" (assignment_expression "uVar18 = puVar8[3]" identifier = (subscript_expression "puVar8[3]" identifier [ number_literal ])) ;) (expression_statement "uVar28 = puVar8[1];" (assignment_expression "uVar28 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar19 = puVar8[2];" (assignment_expression "uVar19 = puVar8[2]" identifier = (subscript_expression "puVar8[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar21 = *puVar8;" (assignment_expression "*puVar21 = *puVar8" (pointer_expression "*puVar21" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar21[1] = uVar28;" (assignment_expression "puVar21[1] = uVar28" (subscript_expression "puVar21[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar21[2] = uVar19;" (assignment_expression "puVar21[2] = uVar19" (subscript_expression "puVar21[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar21[3] = uVar18;" (assignment_expression "puVar21[3] = uVar18" (subscript_expression "puVar21[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar25 = *(undefined4 **)(puVar38 + -0x158);" (assignment_expression "puVar25 = *(undefined4 **)(puVar38 + -0x158)" identifier = (pointer_expression "*(undefined4 **)(puVar38 + -0x158)" * (cast_expression "(undefined4 **)(puVar38 + -0x158)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x158)" ( (binary_expression "puVar38 + -0x158" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" identifier = identifier) ;) (expression_statement "puVar4 = puVar21 + 4;" (assignment_expression "puVar4 = puVar21 + 4" identifier = (binary_expression "puVar21 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 != puVar25)" ( (binary_expression "puVar12 != puVar25" identifier != identifier) )) ;) (expression_statement "bVar1 = *(byte *)&needle_00->__count;" (assignment_expression "bVar1 = *(byte *)&needle_00->__count" identifier = (pointer_expression "*(byte *)&needle_00->__count" * (cast_expression "(byte *)&needle_00->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&needle_00->__count" & (field_expression "needle_00->__count" identifier -> field_identifier))))) ;) (expression_statement "*(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60;" (assignment_expression "*(undefined1 **)(puVar38 + -0x164) = puVar38 + -0x60" (pointer_expression "*(undefined1 **)(puVar38 + -0x164)" * (cast_expression "(undefined1 **)(puVar38 + -0x164)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x164)" ( (binary_expression "puVar38 + -0x164" identifier + number_literal) )))) = (binary_expression "puVar38 + -0x60" identifier + number_literal)) ;) (expression_statement "pmVar27 = (mbstate_t *)*puVar25;" (assignment_expression "pmVar27 = (mbstate_t *)*puVar25" identifier = (cast_expression "(mbstate_t *)*puVar25" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar25" * identifier))) ;) (expression_statement "puVar21[5] = puVar25[1];" (assignment_expression "puVar21[5] = puVar25[1]" (subscript_expression "puVar21[5]" identifier [ number_literal ]) = (subscript_expression "puVar25[1]" identifier [ number_literal ])) ;) (expression_statement "puVar21[4] = pmVar27;" (assignment_expression "puVar21[4] = pmVar27" (subscript_expression "puVar21[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar38[-0x90] = 0;" (assignment_expression "puVar38[-0x90] = 0" (subscript_expression "puVar38[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x54) = needle_00;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x54) = needle_00" (pointer_expression "*(mbstate_t **)(puVar38 + -0x54)" * (cast_expression "(mbstate_t **)(puVar38 + -0x54)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x54)" ( (binary_expression "puVar38 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar38[-100] = 0;" (assignment_expression "puVar38[-100] = 0" (subscript_expression "puVar38[-100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4);" (assignment_expression "uVar6 = *(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4)" ( (binary_expression "*(int *)(puVar38 + -0x168) + (uint)(bVar1 >> 5) * 4" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(bVar1 >> 5) * 4" (call_expression "(uint)(bVar1 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> 5)" ( (binary_expression "bVar1 >> 5" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x60)" * (cast_expression "(undefined4 *)(puVar38 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x60)" ( (binary_expression "puVar38 + -0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);" (assignment_expression "*(int *)(puVar38 + -0x8c) = *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88)" (pointer_expression "*(int *)(puVar38 + -0x8c)" * (cast_expression "(int *)(puVar38 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x8c)" ( (binary_expression "puVar38 + -0x8c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88)" (pointer_expression "*(int *)(puVar38 + -0x8c)" * (cast_expression "(int *)(puVar38 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x8c)" ( (binary_expression "puVar38 + -0x8c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar38 + -0x88)" * (cast_expression "(int *)(puVar38 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x88)" ( (binary_expression "puVar38 + -0x88" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x5c) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x5c) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x5c)" * (cast_expression "(undefined4 *)(puVar38 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x5c)" ( (binary_expression "puVar38 + -0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar38[-0x58] = 0;" (assignment_expression "puVar38[-0x58] = 0" (subscript_expression "puVar38[-0x58]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((uVar6 >> (bVar1 & 0x1f) & 1) != 0) {\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }" if (parenthesized_expression "((uVar6 >> (bVar1 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar6 >> (bVar1 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar6 >> (bVar1 & 0x1f) & 1)" ( (binary_expression "uVar6 >> (bVar1 & 0x1f) & 1" (binary_expression "uVar6 >> (bVar1 & 0x1f)" identifier >> (parenthesized_expression "(bVar1 & 0x1f)" ( (binary_expression "bVar1 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n                  *(int *)(puVar38 + -0x48) = (int)(char)bVar1;\n                  *(undefined4 *)(puVar38 + -0x50) = 1;\n                  puVar38[-0x4c] = 1;\n                  puVar38[-0x58] = 1;\n                  if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }\n                  unaff_s5 = (mbstate_t *)(puVar38 + -0x48);\n                  puVar38[-0x58] = 0;\n                  unaff_s6 = (mbstate_t *)(puVar38 + -0x98);\n                  pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                  *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                  haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);\n                  do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );\n                }" { (expression_statement "*(int *)(puVar38 + -0x48) = (int)(char)bVar1;" (assignment_expression "*(int *)(puVar38 + -0x48) = (int)(char)bVar1" (pointer_expression "*(int *)(puVar38 + -0x48)" * (cast_expression "(int *)(puVar38 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x48)" ( (binary_expression "puVar38 + -0x48" identifier + number_literal) )))) = (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0x50)" * (cast_expression "(undefined4 *)(puVar38 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x50)" ( (binary_expression "puVar38 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar38[-0x4c] = 1;" (assignment_expression "puVar38[-0x4c] = 1" (subscript_expression "puVar38[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-0x58] = 1;" (assignment_expression "puVar38[-0x58] = 1" (subscript_expression "puVar38[-0x58]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((char)bVar1 == 0) {\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }" if (parenthesized_expression "((char)bVar1 == 0)" ( (binary_expression "(char)bVar1 == 0" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n                    uVar16 = (**(code **)(iVar17 + -0x7b80))();\n                    return (_Bool)uVar16;\n                  }" { (expression_statement "uVar16 = (**(code **)(iVar17 + -0x7b80))();" (assignment_expression "uVar16 = (**(code **)(iVar17 + -0x7b80))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7b80))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7b80))" ( (pointer_expression "**(code **)(iVar17 + -0x7b80)" * (pointer_expression "*(code **)(iVar17 + -0x7b80)" * (cast_expression "(code **)(iVar17 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7b80)" ( (binary_expression "iVar17 + -0x7b80" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (return_statement "return (_Bool)uVar16;" return (cast_expression "(_Bool)uVar16" ( (type_descriptor "_Bool" type_identifier) ) identifier) ;) })) (expression_statement "unaff_s5 = (mbstate_t *)(puVar38 + -0x48);" (assignment_expression "unaff_s5 = (mbstate_t *)(puVar38 + -0x48)" identifier = (cast_expression "(mbstate_t *)(puVar38 + -0x48)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x48)" ( (binary_expression "puVar38 + -0x48" identifier + number_literal) )))) ;) (expression_statement "puVar38[-0x58] = 0;" (assignment_expression "puVar38[-0x58] = 0" (subscript_expression "puVar38[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s6 = (mbstate_t *)(puVar38 + -0x98);" (assignment_expression "unaff_s6 = (mbstate_t *)(puVar38 + -0x98)" identifier = (cast_expression "(mbstate_t *)(puVar38 + -0x98)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x98)" ( (binary_expression "puVar38 + -0x98" identifier + number_literal) )))) ;) (expression_statement "pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));" (assignment_expression "pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50))" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50))" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50))" ( (binary_expression "*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50)" (pointer_expression "*(int *)(puVar38 + -0x54)" * (cast_expression "(int *)(puVar38 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x54)" ( (binary_expression "puVar38 + -0x54" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar38 + -0x50)" * (cast_expression "(int *)(puVar38 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x50)" ( (binary_expression "puVar38 + -0x50" identifier + number_literal) ))))) )))) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x54) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x54) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0x54)" * (cast_expression "(mbstate_t **)(puVar38 + -0x54)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x54)" ( (binary_expression "puVar38 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2);" (assignment_expression "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 2)" identifier = (cast_expression "(uchar *)((int)&((mbstate_t *)haystack)->__count + 2)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((mbstate_t *)haystack)->__count + 2)" ( (binary_expression "(int)&((mbstate_t *)haystack)->__count + 2" (cast_expression "(int)&((mbstate_t *)haystack)->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((mbstate_t *)haystack)->__count" & (field_expression "((mbstate_t *)haystack)->__count" (parenthesized_expression "((mbstate_t *)haystack)" ( (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) ;) (do_statement "do {\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  } while( true );" do (compound_statement "{\n                    if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }\n                    pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                    if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }\n                    *(undefined4 *)(puVar38 + -0x50) = 1;\n                    uVar23 = *(uchar *)&pmVar32->__count;\n                    puVar38[-0x4c] = 1;\n                    puVar38[-0x58] = 1;\n                    *(int *)(puVar38 + -0x48) = (int)(char)uVar23;\n                    if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }\n                    if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }\n                    pmVar32 = (mbstate_t *)haystack;\n                    if (bVar3) goto LAB_0002e6c8;\n                    puVar38[-0x90] = 0;\n                    puVar38[-0x58] = 0;\n                    *(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);\n                    pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));\n                    *(mbstate_t **)(puVar38 + -0x54) = pmVar32;\n                    haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);\n                  }" { (if_statement "if (puVar38[-100] != '\0') {\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }" if (parenthesized_expression "(puVar38[-100] != '\0')" ( (binary_expression "puVar38[-100] != '\0'" (subscript_expression "puVar38[-100]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                      sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                      rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));\n                    }" { (labeled_statement "LAB_0002e630:\n                      sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pmVar32,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pmVar32,sVar7)" identifier = (call_expression "strnlen1((char *)pmVar32,sVar7)" identifier (argument_list "((char *)pmVar32,sVar7)" ( (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164));" (call_expression "rpl_mbrtowc((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164))" identifier (argument_list "((wchar_t *)unaff_s5,(char *)pmVar32,sVar7,\n                                  *(mbstate_t **)(puVar38 + -0x164))" ( (cast_expression "(wchar_t *)unaff_s5" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (pointer_expression "*(mbstate_t **)(puVar38 + -0x164)" * (cast_expression "(mbstate_t **)(puVar38 + -0x164)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x164)" ( (binary_expression "puVar38 + -0x164" identifier + number_literal) )))) ))) ;) })) (expression_statement "pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;" (assignment_expression "pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count" identifier = (binary_expression "(mbstate_t *)(uint)*(byte *)&pmVar32->__count" (cast_expression "(mbstate_t *)(uint)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                         ((uint)pmVar26 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar38 + -0x168) +\n                                  (uint)(*(byte *)&pmVar32->__count >> 5) * 4" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pmVar32->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pmVar32->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pmVar32->__count >> 5)" ( (binary_expression "*(byte *)&pmVar32->__count >> 5" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pmVar26 & 0x1f)" ( (binary_expression "(uint)pmVar26 & 0x1f" (cast_expression "(uint)pmVar26" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                      iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }\n                      goto LAB_0002ef3c;\n                    }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164));" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164))" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(*(undefined4 *)(puVar38 + -0x164))" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar38 + -0x164))" ( (pointer_expression "*(undefined4 *)(puVar38 + -0x164)" * (cast_expression "(undefined4 *)(puVar38 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x164)" ( (binary_expression "puVar38 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                        puVar38[-100] = 1;\n                        goto LAB_0002e630;\n                      }" { (expression_statement "puVar38[-100] = 1;" (assignment_expression "puVar38[-100] = 1" (subscript_expression "puVar38[-100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e630;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar38 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0x50)" * (cast_expression "(undefined4 *)(puVar38 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x50)" ( (binary_expression "puVar38 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "uVar23 = *(uchar *)&pmVar32->__count;" (assignment_expression "uVar23 = *(uchar *)&pmVar32->__count" identifier = (pointer_expression "*(uchar *)&pmVar32->__count" * (cast_expression "(uchar *)&pmVar32->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))))) ;) (expression_statement "puVar38[-0x4c] = 1;" (assignment_expression "puVar38[-0x4c] = 1" (subscript_expression "puVar38[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-0x58] = 1;" (assignment_expression "puVar38[-0x58] = 1" (subscript_expression "puVar38[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar38 + -0x48) = (int)(char)uVar23;" (assignment_expression "*(int *)(puVar38 + -0x48) = (int)(char)uVar23" (pointer_expression "*(int *)(puVar38 + -0x48)" * (cast_expression "(int *)(puVar38 + -0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x48)" ( (binary_expression "puVar38 + -0x48" identifier + number_literal) )))) = (cast_expression "(int)(char)uVar23" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)uVar23" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (if_statement "if ((char)uVar23 == 0) {\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }" if (parenthesized_expression "((char)uVar23 == 0)" ( (binary_expression "(char)uVar23 == 0" (cast_expression "(char)uVar23" ( (type_descriptor "char" primitive_type) ) identifier) == number_literal) )) (compound_statement "{\n                      pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);\n                      pmVar32 = (mbstate_t *)0x0;\n                      goto LAB_0002e2ac;\n                    }" { (expression_statement "pmVar11 = *(mbstate_t **)(puVar38 + -0xc4);" (assignment_expression "pmVar11 = *(mbstate_t **)(puVar38 + -0xc4)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0xc4)" * (cast_expression "(mbstate_t **)(puVar38 + -0xc4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc4)" ( (binary_expression "puVar38 + -0xc4" identifier + number_literal) ))))) ;) (expression_statement "pmVar32 = (mbstate_t *)0x0;" (assignment_expression "pmVar32 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) })) (if_statement "if (puVar38[-0x90] == '\0') {\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }\n                    else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }" if (parenthesized_expression "(puVar38[-0x90] == '\0')" ( (binary_expression "puVar38[-0x90] == '\0'" (subscript_expression "puVar38[-0x90]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);\n                      if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }\n                      pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;\n                      if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar38 + -0x88) = 1;\n                      pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;\n                      puVar38[-0x84] = 1;\n                      puVar38[-0x90] = 1;\n                      *(mbstate_t **)(puVar38 + -0x80) = pmVar32;\nLAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;\n                      if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;\n                    }" { (expression_statement "pmVar32 = *(mbstate_t **)(puVar38 + -0x8c);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar38 + -0x8c)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x8c)" * (cast_expression "(mbstate_t **)(puVar38 + -0x8c)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x8c)" ( (binary_expression "puVar38 + -0x8c" identifier + number_literal) ))))) ;) (if_statement "if (puVar38[-0x9c] != '\0') {\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }" if (parenthesized_expression "(puVar38[-0x9c] != '\0')" ( (binary_expression "puVar38[-0x9c] != '\0'" (subscript_expression "puVar38[-0x9c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();\n                        sVar7 = strnlen1((char *)pmVar32,sVar7);\n                    /* WARNING: Subroutine does not return */\n                        rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);\n                      }" { (labeled_statement "LAB_0002e7d4:\n                        sVar7 = (**(code **)(iVar17 + -0x7a18))();" statement_identifier : (expression_statement "sVar7 = (**(code **)(iVar17 + -0x7a18))();" (assignment_expression "sVar7 = (**(code **)(iVar17 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar17 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7a18))" ( (pointer_expression "**(code **)(iVar17 + -0x7a18)" * (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "sVar7 = strnlen1((char *)pmVar32,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)pmVar32,sVar7)" identifier = (call_expression "strnlen1((char *)pmVar32,sVar7)" identifier (argument_list "((char *)pmVar32,sVar7)" ( (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6);" (call_expression "rpl_mbrtowc((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6)" identifier (argument_list "((wchar_t *)pwc,(char *)pmVar32,sVar7,unaff_s6)" ( (cast_expression "(wchar_t *)pwc" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)pmVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) })) (expression_statement "pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count;" (assignment_expression "pmVar26 = (mbstate_t *)(uint)*(byte *)&pmVar32->__count" identifier = (binary_expression "(mbstate_t *)(uint)*(byte *)&pmVar32->__count" (cast_expression "(mbstate_t *)(uint)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0) {\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4) >>\n                           ((uint)pmVar26 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4)" ( (binary_expression "*(int *)(puVar38 + -0x168) +\n                                    (uint)(*(byte *)&pmVar32->__count >> 5) * 4" (pointer_expression "*(int *)(puVar38 + -0x168)" * (cast_expression "(int *)(puVar38 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x168)" ( (binary_expression "puVar38 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*(byte *)&pmVar32->__count >> 5) * 4" (call_expression "(uint)(*(byte *)&pmVar32->__count >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)&pmVar32->__count >> 5)" ( (binary_expression "*(byte *)&pmVar32->__count >> 5" (pointer_expression "*(byte *)&pmVar32->__count" * (cast_expression "(byte *)&pmVar32->__count" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pmVar26 & 0x1f)" ( (binary_expression "(uint)pmVar26 & 0x1f" (cast_expression "(uint)pmVar26" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                        iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);\n                        iVar17 = *(int *)(puVar38 + -0x170);\n                        if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }\n                        goto LAB_0002ef3c;\n                      }" { (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(unaff_s6)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(unaff_s6)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                          puVar38[-0x9c] = 1;\n                          goto LAB_0002e7d4;\n                        }" { (expression_statement "puVar38[-0x9c] = 1;" (assignment_expression "puVar38[-0x9c] = 1" (subscript_expression "puVar38[-0x9c]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e7d4;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar38 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar38 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar38 + -0x88)" * (cast_expression "(undefined4 *)(puVar38 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x88)" ( (binary_expression "puVar38 + -0x88" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count;" (assignment_expression "pmVar32 = (mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" identifier = (cast_expression "(mbstate_t *)(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(uchar *)&pmVar32->__count" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(uchar *)&pmVar32->__count" * (cast_expression "(uchar *)&pmVar32->__count" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pmVar32->__count" & (field_expression "pmVar32->__count" identifier -> field_identifier)))))))) ;) (expression_statement "puVar38[-0x84] = 1;" (assignment_expression "puVar38[-0x84] = 1" (subscript_expression "puVar38[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-0x90] = 1;" (assignment_expression "puVar38[-0x90] = 1" (subscript_expression "puVar38[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x80) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x80) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0x80)" * (cast_expression "(mbstate_t **)(puVar38 + -0x80)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x80)" ( (binary_expression "puVar38 + -0x80" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002e5d0:\n                      pmVar11 = (mbstate_t *)0x0;" statement_identifier : (expression_statement "pmVar11 = (mbstate_t *)0x0;" (assignment_expression "pmVar11 = (mbstate_t *)0x0" identifier = (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (pmVar32 == (mbstate_t *)0x0) goto LAB_0002e2ac;" if (parenthesized_expression "(pmVar32 == (mbstate_t *)0x0)" ( (binary_expression "pmVar32 == (mbstate_t *)0x0" identifier == (cast_expression "(mbstate_t *)0x0" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (expression_statement "pmVar27 = *(mbstate_t **)(puVar38 + -0x88);" (assignment_expression "pmVar27 = *(mbstate_t **)(puVar38 + -0x88)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x88)" * (cast_expression "(mbstate_t **)(puVar38 + -0x88)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x88)" ( (binary_expression "puVar38 + -0x88" identifier + number_literal) ))))) ;) (if_statement "if (puVar38[-0x4c] == '\0') goto LAB_0002e794;" if (parenthesized_expression "(puVar38[-0x4c] == '\0')" ( (binary_expression "puVar38[-0x4c] == '\0'" (subscript_expression "puVar38[-0x4c]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e794;" goto statement_identifier ;)) (expression_statement "bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32;" (assignment_expression "bVar3 = *(mbstate_t **)(puVar38 + -0x48) != pmVar32" identifier = (binary_expression "*(mbstate_t **)(puVar38 + -0x48) != pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0x48)" * (cast_expression "(mbstate_t **)(puVar38 + -0x48)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x48)" ( (binary_expression "puVar38 + -0x48" identifier + number_literal) )))) != identifier)) ;) }) (else_clause "else {\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }" else (compound_statement "{\n                      pmVar27 = *(mbstate_t **)(puVar38 + -0x88);\n                      if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }\nLAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);\n                      if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;\n                      pmVar26 = *(mbstate_t **)(puVar38 + -0x54);\n                      iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));\n                      iVar17 = *(int *)(puVar38 + -0x170);\n                      bVar3 = iVar10 != 0;\n                    }" { (expression_statement "pmVar27 = *(mbstate_t **)(puVar38 + -0x88);" (assignment_expression "pmVar27 = *(mbstate_t **)(puVar38 + -0x88)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x88)" * (cast_expression "(mbstate_t **)(puVar38 + -0x88)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x88)" ( (binary_expression "puVar38 + -0x88" identifier + number_literal) ))))) ;) (if_statement "if (puVar38[-0x84] != '\0') {\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }" if (parenthesized_expression "(puVar38[-0x84] != '\0')" ( (binary_expression "puVar38[-0x84] != '\0'" (subscript_expression "puVar38[-0x84]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        pmVar32 = *(mbstate_t **)(puVar38 + -0x80);\n                        goto LAB_0002e5d0;\n                      }" { (expression_statement "pmVar32 = *(mbstate_t **)(puVar38 + -0x80);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar38 + -0x80)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x80)" * (cast_expression "(mbstate_t **)(puVar38 + -0x80)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x80)" ( (binary_expression "puVar38 + -0x80" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002e5d0;" goto statement_identifier ;) })) (labeled_statement "LAB_0002e794:\n                      iVar10 = *(int *)(puVar38 + -0xc4);" statement_identifier : (expression_statement "iVar10 = *(int *)(puVar38 + -0xc4);" (assignment_expression "iVar10 = *(int *)(puVar38 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar38 + -0xc4)" * (cast_expression "(int *)(puVar38 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0xc4)" ( (binary_expression "puVar38 + -0xc4" identifier + number_literal) ))))) ;)) (if_statement "if (pmVar27 != *(mbstate_t **)(puVar38 + -0x50)) goto LAB_0002e6cc;" if (parenthesized_expression "(pmVar27 != *(mbstate_t **)(puVar38 + -0x50))" ( (binary_expression "pmVar27 != *(mbstate_t **)(puVar38 + -0x50)" identifier != (pointer_expression "*(mbstate_t **)(puVar38 + -0x50)" * (cast_expression "(mbstate_t **)(puVar38 + -0x50)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x50)" ( (binary_expression "puVar38 + -0x50" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e6cc;" goto statement_identifier ;)) (expression_statement "pmVar26 = *(mbstate_t **)(puVar38 + -0x54);" (assignment_expression "pmVar26 = *(mbstate_t **)(puVar38 + -0x54)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x54)" * (cast_expression "(mbstate_t **)(puVar38 + -0x54)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x54)" ( (binary_expression "puVar38 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c));" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c))" identifier = (call_expression "(**(code **)(iVar17 + -0x79c0))(*(undefined4 *)(puVar38 + -0x8c))" (parenthesized_expression "(**(code **)(iVar17 + -0x79c0))" ( (pointer_expression "**(code **)(iVar17 + -0x79c0)" * (pointer_expression "*(code **)(iVar17 + -0x79c0)" * (cast_expression "(code **)(iVar17 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x79c0)" ( (binary_expression "iVar17 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar38 + -0x8c))" ( (pointer_expression "*(undefined4 *)(puVar38 + -0x8c)" * (cast_expression "(undefined4 *)(puVar38 + -0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x8c)" ( (binary_expression "puVar38 + -0x8c" identifier + number_literal) )))) )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = iVar10 != 0;" (assignment_expression "bVar3 = iVar10 != 0" identifier = (binary_expression "iVar10 != 0" identifier != number_literal)) ;) }))) (expression_statement "pmVar32 = (mbstate_t *)haystack;" (assignment_expression "pmVar32 = (mbstate_t *)haystack" identifier = (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (bVar3) goto LAB_0002e6c8;" if (parenthesized_expression "(bVar3)" ( identifier )) (goto_statement "goto LAB_0002e6c8;" goto statement_identifier ;)) (expression_statement "puVar38[-0x90] = 0;" (assignment_expression "puVar38[-0x90] = 0" (subscript_expression "puVar38[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar38[-0x58] = 0;" (assignment_expression "puVar38[-0x58] = 0" (subscript_expression "puVar38[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88);" (assignment_expression "*(int *)(puVar38 + -0x8c) =\n                         *(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88)" (pointer_expression "*(int *)(puVar38 + -0x8c)" * (cast_expression "(int *)(puVar38 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x8c)" ( (binary_expression "puVar38 + -0x8c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar38 + -0x8c) + *(int *)(puVar38 + -0x88)" (pointer_expression "*(int *)(puVar38 + -0x8c)" * (cast_expression "(int *)(puVar38 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x8c)" ( (binary_expression "puVar38 + -0x8c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar38 + -0x88)" * (cast_expression "(int *)(puVar38 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x88)" ( (binary_expression "puVar38 + -0x88" identifier + number_literal) )))))) ;) (expression_statement "pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50));" (assignment_expression "pmVar32 = (mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50))" identifier = (cast_expression "(mbstate_t *)(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50))" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50))" ( (binary_expression "*(int *)(puVar38 + -0x54) + *(int *)(puVar38 + -0x50)" (pointer_expression "*(int *)(puVar38 + -0x54)" * (cast_expression "(int *)(puVar38 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x54)" ( (binary_expression "puVar38 + -0x54" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar38 + -0x50)" * (cast_expression "(int *)(puVar38 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x50)" ( (binary_expression "puVar38 + -0x50" identifier + number_literal) ))))) )))) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x54) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x54) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0x54)" * (cast_expression "(mbstate_t **)(puVar38 + -0x54)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x54)" ( (binary_expression "puVar38 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);" (assignment_expression "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1)" identifier = (cast_expression "(uchar *)((int)&((mbstate_t *)haystack)->__count + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((mbstate_t *)haystack)->__count + 1)" ( (binary_expression "(int)&((mbstate_t *)haystack)->__count + 1" (cast_expression "(int)&((mbstate_t *)haystack)->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((mbstate_t *)haystack)->__count" & (field_expression "((mbstate_t *)haystack)->__count" (parenthesized_expression "((mbstate_t *)haystack)" ( (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "pmVar32 = *(mbstate_t **)(puVar38 + -0x164);" (assignment_expression "pmVar32 = *(mbstate_t **)(puVar38 + -0x164)" identifier = (pointer_expression "*(mbstate_t **)(puVar38 + -0x164)" * (cast_expression "(mbstate_t **)(puVar38 + -0x164)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x164)" ( (binary_expression "puVar38 + -0x164" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(pmVar32)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(pmVar32)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(pmVar32)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1);" (assignment_expression "haystack = (uchar *)((int)&((mbstate_t *)haystack)->__count + 1)" identifier = (cast_expression "(uchar *)((int)&((mbstate_t *)haystack)->__count + 1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((mbstate_t *)haystack)->__count + 1)" ( (binary_expression "(int)&((mbstate_t *)haystack)->__count + 1" (cast_expression "(int)&((mbstate_t *)haystack)->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((mbstate_t *)haystack)->__count" & (field_expression "((mbstate_t *)haystack)->__count" (parenthesized_expression "((mbstate_t *)haystack)" ( (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier))) + number_literal) )))) ;) (if_statement "if (iVar10 != 0) {\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                  pcVar36 = *(code **)(iVar17 + -0x7a18);\n                  puVar38[-100] = 1;\n                  sVar7 = (*pcVar36)();\n                  sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n                  rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);\n                }" { (expression_statement "pcVar36 = *(code **)(iVar17 + -0x7a18);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x7a18)" identifier = (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) ;) (expression_statement "puVar38[-100] = 1;" (assignment_expression "puVar38[-100] = 1" (subscript_expression "puVar38[-100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "sVar7 = (*pcVar36)();" (assignment_expression "sVar7 = (*pcVar36)()" identifier = (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "sVar7 = strnlen1((char *)needle_00,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)needle_00,sVar7)" identifier = (call_expression "strnlen1((char *)needle_00,sVar7)" identifier (argument_list "((char *)needle_00,sVar7)" ( (cast_expression "(char *)needle_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32);" (call_expression "rpl_mbrtowc((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32)" identifier (argument_list "((wchar_t *)(puVar38 + -0x48),(char *)needle_00,sVar7,pmVar32)" ( (cast_expression "(wchar_t *)(puVar38 + -0x48)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x48)" ( (binary_expression "puVar38 + -0x48" identifier + number_literal) ))) , (cast_expression "(char *)needle_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier ))) ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) })) })) }))) (expression_statement "pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10);" (assignment_expression "pmVar32 = (mbstate_t *)((int)&unaff_s5->__count + iVar10)" identifier = (cast_expression "(mbstate_t *)((int)&unaff_s5->__count + iVar10)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&unaff_s5->__count + iVar10)" ( (binary_expression "(int)&unaff_s5->__count + iVar10" (cast_expression "(int)&unaff_s5->__count" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&unaff_s5->__count" & (field_expression "unaff_s5->__count" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "puVar38[-200] = 0;" (assignment_expression "puVar38[-200] = 0" (subscript_expression "puVar38[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0xc4) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0xc4) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0xc4)" * (cast_expression "(mbstate_t **)(puVar38 + -0xc4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0xc4)" ( (binary_expression "puVar38 + -0xc4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1;" (assignment_expression "*(int *)(puVar38 + -0x160) = *(int *)(puVar38 + -0x160) + 1" (pointer_expression "*(int *)(puVar38 + -0x160)" * (cast_expression "(int *)(puVar38 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x160)" ( (binary_expression "puVar38 + -0x160" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar38 + -0x160) + 1" (pointer_expression "*(int *)(puVar38 + -0x160)" * (cast_expression "(int *)(puVar38 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x160)" ( (binary_expression "puVar38 + -0x160" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "cVar14 = puVar38[-0xd4];" (assignment_expression "cVar14 = puVar38[-0xd4]" identifier = (subscript_expression "puVar38[-0xd4]" identifier [ number_literal ])) ;) (expression_statement "haystack = (uchar *)pmVar11;" (assignment_expression "haystack = (uchar *)pmVar11" identifier = (cast_expression "(uchar *)pmVar11" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (while_statement "while( true );" while (parenthesized_expression "( true )" ( true )) (expression_statement ";" ;)) }) identifier = ( identifier * ) number_literal ; identifier = ( identifier * ) ( identifier + number_literal ) ; goto identifier ;) })) (expression_statement "iVar10 = (**(code **)(iVar17 + -0x799c))(haystack);" (assignment_expression "iVar10 = (**(code **)(iVar17 + -0x799c))(haystack)" identifier = (call_expression "(**(code **)(iVar17 + -0x799c))(haystack)" (parenthesized_expression "(**(code **)(iVar17 + -0x799c))" ( (pointer_expression "**(code **)(iVar17 + -0x799c)" * (pointer_expression "*(code **)(iVar17 + -0x799c)" * (cast_expression "(code **)(iVar17 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x799c)" ( (binary_expression "iVar17 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(haystack)" ( identifier )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x170);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x170)" identifier = (pointer_expression "*(int *)(puVar38 + -0x170)" * (cast_expression "(int *)(puVar38 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x170)" ( (binary_expression "puVar38 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != 0) {\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar36 = *(code **)(iVar17 + -0x7a18);\n      puVar38[-0x144] = 1;\n      sVar7 = (*pcVar36)();\n      sVar7 = strnlen1((char *)needle_00,sVar7);\n                    /* WARNING: Subroutine does not return */\n      rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);\n    }" { (expression_statement "pcVar36 = *(code **)(iVar17 + -0x7a18);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x7a18)" identifier = (pointer_expression "*(code **)(iVar17 + -0x7a18)" * (cast_expression "(code **)(iVar17 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7a18)" ( (binary_expression "iVar17 + -0x7a18" identifier + number_literal) ))))) ;) (expression_statement "puVar38[-0x144] = 1;" (assignment_expression "puVar38[-0x144] = 1" (subscript_expression "puVar38[-0x144]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "sVar7 = (*pcVar36)();" (assignment_expression "sVar7 = (*pcVar36)()" identifier = (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "sVar7 = strnlen1((char *)needle_00,sVar7);" (assignment_expression "sVar7 = strnlen1((char *)needle_00,sVar7)" identifier = (call_expression "strnlen1((char *)needle_00,sVar7)" identifier (argument_list "((char *)needle_00,sVar7)" ( (cast_expression "(char *)needle_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack);" (call_expression "rpl_mbrtowc((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack)" identifier (argument_list "((wchar_t *)(puVar38 + -0x128),(char *)needle_00,sVar7,(mbstate_t *)haystack)" ( (cast_expression "(wchar_t *)(puVar38 + -0x128)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x128)" ( (binary_expression "puVar38 + -0x128" identifier + number_literal) ))) , (cast_expression "(char *)needle_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(mbstate_t *)haystack" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) })) (labeled_statement "LAB_0002ef3c:\n    (**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);" statement_identifier : (expression_statement "(**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar17 + -0x7bb0))\n              (*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar17 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar17 + -0x7bb0)" * (pointer_expression "*(code **)(iVar17 + -0x7bb0)" * (cast_expression "(code **)(iVar17 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7bb0)" ( (binary_expression "iVar17 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar17 + -0x7fc8) + -0x100,*(int *)(iVar17 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar17 + -0x7fc8) + -0xd0)" ( (binary_expression "*(int *)(iVar17 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar17 + -0x7fc8)" * (cast_expression "(int *)(iVar17 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7fc8)" ( (binary_expression "iVar17 + -0x7fc8" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar17 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar17 + -0x7fc8)" * (cast_expression "(int *)(iVar17 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7fc8)" ( (binary_expression "iVar17 + -0x7fc8" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar17 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar17 + -0x7fc8)" * (cast_expression "(int *)(iVar17 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7fc8)" ( (binary_expression "iVar17 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;)) (expression_statement "pmVar27 = (mbstate_t *)0xb2;" (assignment_expression "pmVar27 = (mbstate_t *)0xb2" identifier = (cast_expression "(mbstate_t *)0xb2" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120);" (assignment_expression "pmVar26 = (mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120)" identifier = (cast_expression "(mbstate_t *)(*(int *)(iVar17 + -0x7fc8) + -0x120)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar17 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar17 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar17 + -0x7fc8)" * (cast_expression "(int *)(iVar17 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7fc8)" ( (binary_expression "iVar17 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8);" (assignment_expression "s = (byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8)" identifier = (cast_expression "(byte *)(*(int *)(iVar17 + -0x7fc8) + -0xe8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar17 + -0x7fc8) + -0xe8)" ( (binary_expression "*(int *)(iVar17 + -0x7fc8) + -0xe8" (pointer_expression "*(int *)(iVar17 + -0x7fc8)" * (cast_expression "(int *)(iVar17 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + -0x7fc8)" ( (binary_expression "iVar17 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(iVar17 + -0x7bb0))();" (call_expression "(**(code **)(iVar17 + -0x7bb0))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar17 + -0x7bb0)" * (pointer_expression "*(code **)(iVar17 + -0x7bb0)" * (cast_expression "(code **)(iVar17 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7bb0)" ( (binary_expression "iVar17 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "pcVar36 = *(code **)(iVar17 + -0x79d8);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar17 + -0x79d8)" * (cast_expression "(code **)(iVar17 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x79d8)" ( (binary_expression "iVar17 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "pcVar41 = mbsnwidth;" (assignment_expression "pcVar41 = mbsnwidth" identifier = identifier) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar36 + 0x46c58);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar36 + 0x46c58)" identifier = (pointer_expression "*(undefined4 **)(pcVar36 + 0x46c58)" * (cast_expression "(undefined4 **)(pcVar36 + 0x46c58)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x46c58)" ( (binary_expression "pcVar36 + 0x46c58" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar36 + 0x46bd8);" (assignment_expression "pcVar40 = *(code **)(pcVar36 + 0x46bd8)" identifier = (pointer_expression "*(code **)(pcVar36 + 0x46bd8)" * (cast_expression "(code **)(pcVar36 + 0x46bd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x46bd8)" ( (binary_expression "pcVar36 + 0x46bd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar38 + -0x1bc) = puVar8;" (assignment_expression "*(undefined4 **)(puVar38 + -0x1bc) = puVar8" (pointer_expression "*(undefined4 **)(puVar38 + -0x1bc)" * (cast_expression "(undefined4 **)(puVar38 + -0x1bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1bc)" ( (binary_expression "puVar38 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0;" (assignment_expression "*(code **)(puVar38 + -0x1c8) = pcVar36 + 0x4e5f0" (pointer_expression "*(code **)(puVar38 + -0x1c8)" * (cast_expression "(code **)(puVar38 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1c8)" ( (binary_expression "puVar38 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar36 + 0x4e5f0" identifier + number_literal)) ;) (expression_statement "*(mbstate_t **)(puVar38 + -400) = unaff_s6;" (assignment_expression "*(mbstate_t **)(puVar38 + -400) = unaff_s6" (pointer_expression "*(mbstate_t **)(puVar38 + -400)" * (cast_expression "(mbstate_t **)(puVar38 + -400)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -400)" ( (binary_expression "puVar38 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x1a4) = pmVar32;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x1a4) = pmVar32" (pointer_expression "*(mbstate_t **)(puVar38 + -0x1a4)" * (cast_expression "(mbstate_t **)(puVar38 + -0x1a4)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1a4)" ( (binary_expression "puVar38 + -0x1a4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar33 = s + (int)pmVar26;" (assignment_expression "pbVar33 = s + (int)pmVar26" identifier = (binary_expression "s + (int)pmVar26" identifier + (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(code **)(puVar38 + -0x184) = pcVar41;" (assignment_expression "*(code **)(puVar38 + -0x184) = pcVar41" (pointer_expression "*(code **)(puVar38 + -0x184)" * (cast_expression "(code **)(puVar38 + -0x184)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x184)" ( (binary_expression "puVar38 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x188) = ps;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x188) = ps" (pointer_expression "*(mbstate_t **)(puVar38 + -0x188)" * (cast_expression "(mbstate_t **)(puVar38 + -0x188)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x188)" ( (binary_expression "puVar38 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x18c) = pwc;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x18c) = pwc" (pointer_expression "*(mbstate_t **)(puVar38 + -0x18c)" * (cast_expression "(mbstate_t **)(puVar38 + -0x18c)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x18c)" ( (binary_expression "puVar38 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x194) = unaff_s5;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x194) = unaff_s5" (pointer_expression "*(mbstate_t **)(puVar38 + -0x194)" * (cast_expression "(mbstate_t **)(puVar38 + -0x194)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x194)" ( (binary_expression "puVar38 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x198) = unaff_s4;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x198) = unaff_s4" (pointer_expression "*(mbstate_t **)(puVar38 + -0x198)" * (cast_expression "(mbstate_t **)(puVar38 + -0x198)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x198)" ( (binary_expression "puVar38 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x19c) = needle_00;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x19c) = needle_00" (pointer_expression "*(mbstate_t **)(puVar38 + -0x19c)" * (cast_expression "(mbstate_t **)(puVar38 + -0x19c)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x19c)" ( (binary_expression "puVar38 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x1a0) = pmVar42;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x1a0) = pmVar42" (pointer_expression "*(mbstate_t **)(puVar38 + -0x1a0)" * (cast_expression "(mbstate_t **)(puVar38 + -0x1a0)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1a0)" ( (binary_expression "puVar38 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uchar **)(puVar38 + -0x1a8) = haystack;" (assignment_expression "*(uchar **)(puVar38 + -0x1a8) = haystack" (pointer_expression "*(uchar **)(puVar38 + -0x1a8)" * (cast_expression "(uchar **)(puVar38 + -0x1a8)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1a8)" ( (binary_expression "puVar38 + -0x1a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(mbstate_t **)(puVar38 + -0x178) = pmVar27;" (assignment_expression "*(mbstate_t **)(puVar38 + -0x178) = pmVar27" (pointer_expression "*(mbstate_t **)(puVar38 + -0x178)" * (cast_expression "(mbstate_t **)(puVar38 + -0x178)" ( (type_descriptor "mbstate_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x178)" ( (binary_expression "puVar38 + -0x178" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar38 + -0x1ac) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar38 + -0x1ac) = *puVar8" (pointer_expression "*(undefined4 *)(puVar38 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar38 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1ac)" ( (binary_expression "puVar38 + -0x1ac" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "uVar6 = (*pcVar40)();" (assignment_expression "uVar6 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x1c8);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar38 + -0x1c8)" * (cast_expression "(int *)(puVar38 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1c8)" ( (binary_expression "puVar38 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar6 < 2) {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n    iVar10 = 0;\n    if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (s < pbVar33) {\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }" if (parenthesized_expression "(s < pbVar33)" ( (binary_expression "s < pbVar33" identifier < identifier) )) (compound_statement "{\n      piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();\n      pmVar26 = (mbstate_t *)0x7fffffff;\n      iVar17 = *(int *)(puVar38 + -0x1c8);\n      do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);\n      piVar22 = *(int **)(puVar38 + -0x1bc);\n      goto LAB_0002f064;\n    }" { (expression_statement "piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))();" (assignment_expression "piVar13 = (int *)(**(code **)(iVar17 + -0x7bb4))()" identifier = (cast_expression "(int *)(**(code **)(iVar17 + -0x7bb4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar17 + -0x7bb4))()" (parenthesized_expression "(**(code **)(iVar17 + -0x7bb4))" ( (pointer_expression "**(code **)(iVar17 + -0x7bb4)" * (pointer_expression "*(code **)(iVar17 + -0x7bb4)" * (cast_expression "(code **)(iVar17 + -0x7bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x7bb4)" ( (binary_expression "iVar17 + -0x7bb4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pmVar26 = (mbstate_t *)0x7fffffff;" (assignment_expression "pmVar26 = (mbstate_t *)0x7fffffff" identifier = (cast_expression "(mbstate_t *)0x7fffffff" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = *(int *)(puVar38 + -0x1c8);" (assignment_expression "iVar17 = *(int *)(puVar38 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar38 + -0x1c8)" * (cast_expression "(int *)(puVar38 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1c8)" ( (binary_expression "puVar38 + -0x1c8" identifier + number_literal) ))))) ;) (do_statement "do {\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      } while (pbVar33 != pbVar34);" do (compound_statement "{\n        pbVar34 = s + 1;\n        uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);\n        if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }\n        s = pbVar34;\n      }" { (expression_statement "pbVar34 = s + 1;" (assignment_expression "pbVar34 = s + 1" identifier = (binary_expression "s + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2);" (assignment_expression "uVar2 = *(ushort *)(*piVar13 + (uint)*s * 2)" identifier = (pointer_expression "*(ushort *)(*piVar13 + (uint)*s * 2)" * (cast_expression "(ushort *)(*piVar13 + (uint)*s * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (uint)*s * 2)" ( (binary_expression "*piVar13 + (uint)*s * 2" (pointer_expression "*piVar13" * identifier) + (binary_expression "(uint)*s * 2" (binary_expression "(uint)*s" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) ))))) ;) (if_statement "if ((uVar2 & 0x40) == 0) {\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }" if (parenthesized_expression "((uVar2 & 0x40) == 0)" ( (binary_expression "(uVar2 & 0x40) == 0" (parenthesized_expression "(uVar2 & 0x40)" ( (binary_expression "uVar2 & 0x40" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }\n          if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;\n        }" { (if_statement "if ((*(uint *)(puVar38 + -0x178) & 2) != 0) {\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }" if (parenthesized_expression "((*(uint *)(puVar38 + -0x178) & 2) != 0)" ( (binary_expression "(*(uint *)(puVar38 + -0x178) & 2) != 0" (parenthesized_expression "(*(uint *)(puVar38 + -0x178) & 2)" ( (binary_expression "*(uint *)(puVar38 + -0x178) & 2" (pointer_expression "*(uint *)(puVar38 + -0x178)" * (cast_expression "(uint *)(puVar38 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x178)" ( (binary_expression "puVar38 + -0x178" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n            iVar10 = -1;\n            goto LAB_0002f060;\n          }" { (expression_statement "iVar10 = -1;" (assignment_expression "iVar10 = -1" identifier = number_literal) ;) (goto_statement "goto LAB_0002f060;" goto statement_identifier ;) })) (if_statement "if ((uVar2 & 0x200) == 0) goto LAB_0002f1dc;" if (parenthesized_expression "((uVar2 & 0x200) == 0)" ( (binary_expression "(uVar2 & 0x200) == 0" (parenthesized_expression "(uVar2 & 0x200)" ( (binary_expression "uVar2 & 0x200" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002f1dc;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }" else (compound_statement "{\nLAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);\n          if (iVar10 == 0x7fffffff) goto LAB_0002f064;\n          iVar10 = iVar10 + 1;\n        }" { (labeled_statement "LAB_0002f1dc:\n          piVar22 = *(int **)(puVar38 + -0x1bc);" statement_identifier : (expression_statement "piVar22 = *(int **)(puVar38 + -0x1bc);" (assignment_expression "piVar22 = *(int **)(puVar38 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar38 + -0x1bc)" * (cast_expression "(int **)(puVar38 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1bc)" ( (binary_expression "puVar38 + -0x1bc" identifier + number_literal) ))))) ;)) (if_statement "if (iVar10 == 0x7fffffff) goto LAB_0002f064;" if (parenthesized_expression "(iVar10 == 0x7fffffff)" ( (binary_expression "iVar10 == 0x7fffffff" identifier == number_literal) )) (goto_statement "goto LAB_0002f064;" goto statement_identifier ;)) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }))) (expression_statement "s = pbVar34;" (assignment_expression "s = pbVar34" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar33 != pbVar34)" ( (binary_expression "pbVar33 != pbVar34" identifier != identifier) )) ;) (expression_statement "piVar22 = *(int **)(puVar38 + -0x1bc);" (assignment_expression "piVar22 = *(int **)(puVar38 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar38 + -0x1bc)" * (cast_expression "(int **)(puVar38 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1bc)" ( (binary_expression "puVar38 + -0x1bc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002f064;" goto statement_identifier ;) })) }) (else_clause "else {\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }" else (compound_statement "{\n    iVar10 = 0;\n    if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }\n  }" { (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (s < pbVar33) {\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }" if (parenthesized_expression "(s < pbVar33)" ( (binary_expression "s < pbVar33" identifier < identifier) )) (compound_statement "{\n      *(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);\n    }" { (expression_statement "*(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2;" (assignment_expression "*(uint *)(puVar38 + -0x1c0) = *(uint *)(puVar38 + -0x178) & 2" (pointer_expression "*(uint *)(puVar38 + -0x1c0)" * (cast_expression "(uint *)(puVar38 + -0x1c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1c0)" ( (binary_expression "puVar38 + -0x1c0" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar38 + -0x178) & 2" (pointer_expression "*(uint *)(puVar38 + -0x178)" * (cast_expression "(uint *)(puVar38 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x178)" ( (binary_expression "puVar38 + -0x178" identifier + number_literal) )))) & number_literal)) ;) (do_statement "do {\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      } while (s < pbVar33);" do (compound_statement "{\n        iVar9 = (int)(char)*s;\n        if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;\n        s = s + 1;\n        iVar10 = iVar10 + 1;\n      }" { (expression_statement "iVar9 = (int)(char)*s;" (assignment_expression "iVar9 = (int)(char)*s" identifier = (cast_expression "(int)(char)*s" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*s" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*s" * identifier)))) ;) (if_statement "if (iVar9 < 0x40) {\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }\n        else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;" if (parenthesized_expression "(iVar9 < 0x40)" ( (binary_expression "iVar9 < 0x40" identifier < number_literal) )) (compound_statement "{\n          if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }\n        }" { (if_statement "if ((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))) {\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }" if (parenthesized_expression "((iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff)))" ( (binary_expression "(iVar9 < 0x25) && (3 < (iVar9 - 0x20U & 0xff))" (parenthesized_expression "(iVar9 < 0x25)" ( (binary_expression "iVar9 < 0x25" identifier < number_literal) )) && (parenthesized_expression "(3 < (iVar9 - 0x20U & 0xff))" ( (binary_expression "3 < (iVar9 - 0x20U & 0xff)" number_literal < (parenthesized_expression "(iVar9 - 0x20U & 0xff)" ( (binary_expression "iVar9 - 0x20U & 0xff" (binary_expression "iVar9 - 0x20U" identifier - number_literal) & number_literal) ))) ))) )) (compound_statement "{\ncode_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;\n            *(undefined4 *)(puVar38 + -0x1b0) = 0;\n                    /* WARNING: Subroutine does not return */\n            rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));\n          }" { (labeled_statement "code_r0x0002f044:\n            *(undefined4 *)(puVar38 + -0x1b4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar38 + -0x1b4) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x1b4) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x1b4)" * (cast_expression "(undefined4 *)(puVar38 + -0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1b4)" ( (binary_expression "puVar38 + -0x1b4" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(puVar38 + -0x1b0) = 0;" (assignment_expression "*(undefined4 *)(puVar38 + -0x1b0) = 0" (pointer_expression "*(undefined4 *)(puVar38 + -0x1b0)" * (cast_expression "(undefined4 *)(puVar38 + -0x1b0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1b0)" ( (binary_expression "puVar38 + -0x1b0" identifier + number_literal) )))) = number_literal) ;) comment (expression_statement "rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4));" (call_expression "rpl_mbrtowc((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4))" identifier (argument_list "((wchar_t *)(puVar38 + -0x1b8),(char *)s,(int)pbVar33 - (int)s,\n                        (mbstate_t *)(puVar38 + -0x1b4))" ( (cast_expression "(wchar_t *)(puVar38 + -0x1b8)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1b8)" ( (binary_expression "puVar38 + -0x1b8" identifier + number_literal) ))) , (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (binary_expression "(int)pbVar33 - (int)s" (cast_expression "(int)pbVar33" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)s" ( (type_descriptor "int" primitive_type) ) identifier)) , (cast_expression "(mbstate_t *)(puVar38 + -0x1b4)" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1b4)" ( (binary_expression "puVar38 + -0x1b4" identifier + number_literal) ))) ))) ;) })) }) (else_clause "else if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;" else (if_statement "if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n        goto code_r0x0002f044;" if (parenthesized_expression "((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))" ( (binary_expression "(iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" (parenthesized_expression "(iVar9 < 0x41)" ( (binary_expression "iVar9 < 0x41" identifier < number_literal) )) || (parenthesized_expression "((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" ( (parenthesized_expression "(0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))" ( (binary_expression "0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))" (binary_expression "0x5f < iVar9" number_literal < identifier) && (parenthesized_expression "(0x1d < (iVar9 - 0x61U & 0xff))" ( (binary_expression "0x1d < (iVar9 - 0x61U & 0xff)" number_literal < (parenthesized_expression "(iVar9 - 0x61U & 0xff)" ( (binary_expression "iVar9 - 0x61U & 0xff" (binary_expression "iVar9 - 0x61U" identifier - number_literal) & number_literal) ))) ))) )) ))) )) (goto_statement "goto code_r0x0002f044;" goto statement_identifier ;)))) (expression_statement "s = s + 1;" (assignment_expression "s = s + 1" identifier = (binary_expression "s + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(s < pbVar33)" ( (binary_expression "s < pbVar33" identifier < identifier) )) ;) })) }))) (labeled_statement "LAB_0002f060:\n  piVar22 = *(int **)(puVar38 + -0x1bc);" statement_identifier : (expression_statement "piVar22 = *(int **)(puVar38 + -0x1bc);" (assignment_expression "piVar22 = *(int **)(puVar38 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar38 + -0x1bc)" * (cast_expression "(int **)(puVar38 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1bc)" ( (binary_expression "puVar38 + -0x1bc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002f064:\n  string = *(char **)(puVar38 + -0x1ac);" statement_identifier : (expression_statement "string = *(char **)(puVar38 + -0x1ac);" (assignment_expression "string = *(char **)(puVar38 + -0x1ac)" identifier = (pointer_expression "*(char **)(puVar38 + -0x1ac)" * (cast_expression "(char **)(puVar38 + -0x1ac)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1ac)" ( (binary_expression "puVar38 + -0x1ac" identifier + number_literal) ))))) ;)) (if_statement "if (string != (char *)*piVar22) {\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }" if (parenthesized_expression "(string != (char *)*piVar22)" ( (binary_expression "string != (char *)*piVar22" identifier != (cast_expression "(char *)*piVar22" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar22" * identifier))) )) (compound_statement "{\n    pcVar36 = *(code **)(iVar17 + -0x79d8);\n    pcVar41 = gnu_mbswidth;\n    (*pcVar36)();\n    pcVar40 = *(code **)(pcVar36 + 0x468a8);\n    *(byte **)(puVar38 + -0x1e0) = pbVar33;\n    *(int *)(puVar38 + -0x1e4) = iVar10;\n    *(code **)(puVar38 + -0x1dc) = pcVar41;\n    *(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;\n    sVar7 = (*pcVar40)();\n    iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);\n    return SUB41(iVar17,0);\n  }" { (expression_statement "pcVar36 = *(code **)(iVar17 + -0x79d8);" (assignment_expression "pcVar36 = *(code **)(iVar17 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar17 + -0x79d8)" * (cast_expression "(code **)(iVar17 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar17 + -0x79d8)" ( (binary_expression "iVar17 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "pcVar41 = gnu_mbswidth;" (assignment_expression "pcVar41 = gnu_mbswidth" identifier = identifier) ;) (expression_statement "(*pcVar36)();" (call_expression "(*pcVar36)()" (parenthesized_expression "(*pcVar36)" ( (pointer_expression "*pcVar36" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar40 = *(code **)(pcVar36 + 0x468a8);" (assignment_expression "pcVar40 = *(code **)(pcVar36 + 0x468a8)" identifier = (pointer_expression "*(code **)(pcVar36 + 0x468a8)" * (cast_expression "(code **)(pcVar36 + 0x468a8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar36 + 0x468a8)" ( (binary_expression "pcVar36 + 0x468a8" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar38 + -0x1e0) = pbVar33;" (assignment_expression "*(byte **)(puVar38 + -0x1e0) = pbVar33" (pointer_expression "*(byte **)(puVar38 + -0x1e0)" * (cast_expression "(byte **)(puVar38 + -0x1e0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1e0)" ( (binary_expression "puVar38 + -0x1e0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar38 + -0x1e4) = iVar10;" (assignment_expression "*(int *)(puVar38 + -0x1e4) = iVar10" (pointer_expression "*(int *)(puVar38 + -0x1e4)" * (cast_expression "(int *)(puVar38 + -0x1e4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar38 + -0x1e4)" ( (binary_expression "puVar38 + -0x1e4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -0x1dc) = pcVar41;" (assignment_expression "*(code **)(puVar38 + -0x1dc) = pcVar41" (pointer_expression "*(code **)(puVar38 + -0x1dc)" * (cast_expression "(code **)(puVar38 + -0x1dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1dc)" ( (binary_expression "puVar38 + -0x1dc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334;" (assignment_expression "*(code **)(puVar38 + -0x1f0) = pcVar36 + 0x4e334" (pointer_expression "*(code **)(puVar38 + -0x1f0)" * (cast_expression "(code **)(puVar38 + -0x1f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar38 + -0x1f0)" ( (binary_expression "puVar38 + -0x1f0" identifier + number_literal) )))) = (binary_expression "pcVar36 + 0x4e334" identifier + number_literal)) ;) (expression_statement "sVar7 = (*pcVar40)();" (assignment_expression "sVar7 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar17 = mbsnwidth(string,sVar7,(int)pmVar26);" (assignment_expression "iVar17 = mbsnwidth(string,sVar7,(int)pmVar26)" identifier = (call_expression "mbsnwidth(string,sVar7,(int)pmVar26)" identifier (argument_list "(string,sVar7,(int)pmVar26)" ( identifier , identifier , (cast_expression "(int)pmVar26" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (return_statement "return SUB41(iVar17,0);" return (call_expression "SUB41(iVar17,0)" identifier (argument_list "(iVar17,0)" ( identifier , number_literal ))) ;) })) (return_statement "return SUB41(iVar10,0);" return (call_expression "SUB41(iVar10,0)" identifier (argument_list "(iVar10,0)" ( identifier , number_literal ))) ;) }))) })))
(translation_unit "byte * FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)\n\n{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}\n\n" (function_definition "byte * FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)\n\n{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}" type_identifier (pointer_declarator "* FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" * (function_declarator "FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" identifier (parameter_list "(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) )))) (compound_statement "{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}" { (declaration "ushort uVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "int *piVar19;" primitive_type (pointer_declarator "*piVar19" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "undefined4 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "byte *pbVar23;" type_identifier (pointer_declarator "*pbVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "undefined4 uVar25;" type_identifier identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "uint *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "byte *pbVar28;" type_identifier (pointer_declarator "*pbVar28" * identifier) ;) (declaration "byte *pbVar29;" type_identifier (pointer_declarator "*pbVar29" * identifier) ;) (declaration "char *pcVar30;" primitive_type (pointer_declarator "*pcVar30" * identifier) ;) (declaration "byte *pbVar31;" type_identifier (pointer_declarator "*pbVar31" * identifier) ;) (declaration "int unaff_s2;" primitive_type identifier ;) (declaration "undefined1 *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "byte *unaff_s4;" type_identifier (pointer_declarator "*unaff_s4" * identifier) ;) (declaration "byte *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "byte *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "undefined4 unaff_s7;" type_identifier identifier ;) (declaration "undefined *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "code *pcVar33;" type_identifier (pointer_declarator "*pcVar33" * identifier) ;) (declaration "undefined1 *puVar34;" type_identifier (pointer_declarator "*puVar34" * identifier) ;) (declaration "undefined1 *puVar35;" type_identifier (pointer_declarator "*puVar35" * identifier) ;) (declaration "undefined1 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "undefined1 *puVar37;" type_identifier (pointer_declarator "*puVar37" * identifier) ;) (declaration "undefined1 *puVar38;" type_identifier (pointer_declarator "*puVar38" * identifier) ;) (declaration "undefined1 *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "code *pcVar40;" type_identifier (pointer_declarator "*pcVar40" * identifier) ;) (declaration "undefined4 uVar41;" type_identifier identifier ;) (declaration "code *pcVar42;" type_identifier (pointer_declarator "*pcVar42" * identifier) ;) (declaration "byte *pbVar43;" type_identifier (pointer_declarator "*pbVar43" * identifier) ;) (declaration "undefined1 auStack_38 [16];" type_identifier (array_declarator "auStack_38 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "int local_14;" primitive_type identifier ;) (expression_statement "pbVar28 = PTR___stack_chk_guard_00075be8;" (assignment_expression "pbVar28 = PTR___stack_chk_guard_00075be8" identifier = identifier) ;) (expression_statement "puVar34 = auStack_38;" (assignment_expression "puVar34 = auStack_38" identifier = identifier) ;) (expression_statement "uVar5 = param_3 * 4;" (assignment_expression "uVar5 = param_3 * 4" identifier = (binary_expression "param_3 * 4" identifier * number_literal)) ;) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_00075be8;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_00075be8" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00075be8" * (cast_expression "(int *)PTR___stack_chk_guard_00075be8" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" if (parenthesized_expression "(((int)uVar5 < 0) || (param_3 >> 0x1e != 0))" ( (binary_expression "((int)uVar5 < 0) || (param_3 >> 0x1e != 0)" (parenthesized_expression "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(param_3 >> 0x1e != 0)" ( (binary_expression "param_3 >> 0x1e != 0" (binary_expression "param_3 >> 0x1e" identifier >> number_literal) != number_literal) ))) )) (compound_statement "{\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }" { (labeled_statement "LAB_0002d620:\n    pbVar6 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" else (compound_statement "{\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" { (if_statement "if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" if (parenthesized_expression "(uVar5 < 0xfb1)" ( (binary_expression "uVar5 < 0xfb1" identifier < number_literal) )) (compound_statement "{\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }" { (expression_statement "iVar15 = -(uVar5 + 0x16 & 0xfffffff8);" (assignment_expression "iVar15 = -(uVar5 + 0x16 & 0xfffffff8)" identifier = (unary_expression "-(uVar5 + 0x16 & 0xfffffff8)" - (parenthesized_expression "(uVar5 + 0x16 & 0xfffffff8)" ( (binary_expression "uVar5 + 0x16 & 0xfffffff8" (binary_expression "uVar5 + 0x16" identifier + number_literal) & number_literal) )))) ;) (expression_statement "puVar34 = auStack_38 + iVar15;" (assignment_expression "puVar34 = auStack_38 + iVar15" identifier = (binary_expression "auStack_38 + iVar15" identifier + identifier)) ;) (expression_statement "uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;" (assignment_expression "uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0" identifier = (binary_expression "(int)&local_1c + iVar15 + 3 & 0xfffffff0" (binary_expression "(int)&local_1c + iVar15 + 3" (binary_expression "(int)&local_1c + iVar15" (cast_expression "(int)&local_1c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_1c" & identifier)) + identifier) + number_literal) & number_literal)) ;) (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar36 = auStack_38 + iVar15;" (assignment_expression "puVar36 = auStack_38 + iVar15" identifier = (binary_expression "auStack_38 + iVar15" identifier + identifier)) ;) (if_statement "if (uVar5 == 0) goto LAB_0002d5c8;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d5c8;" goto statement_identifier ;)) }) (else_clause "else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" else (compound_statement "{\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" { (expression_statement "local_1c = param_2;" (assignment_expression "local_1c = param_2" identifier = identifier) ;) (expression_statement "uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);" (assignment_expression "uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5)" identifier = (call_expression "(*(code *)PTR_mmalloca_000758dc)(uVar5)" (parenthesized_expression "(*(code *)PTR_mmalloca_000758dc)" ( (pointer_expression "*(code *)PTR_mmalloca_000758dc" * (cast_expression "(code *)PTR_mmalloca_000758dc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar5)" ( identifier )))) ;) (expression_statement "param_2 = local_1c;" (assignment_expression "param_2 = local_1c" identifier = identifier) ;) (expression_statement "puVar36 = auStack_38;" (assignment_expression "puVar36 = auStack_38" identifier = identifier) ;) (if_statement "if (uVar5 == 0) goto LAB_0002d620;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d620;" goto statement_identifier ;)) }))) (expression_statement "puVar34 = puVar36;" (assignment_expression "puVar34 = puVar36" identifier = identifier) ;) (expression_statement "*(undefined4 *)(uVar5 + 4) = 1;" (assignment_expression "*(undefined4 *)(uVar5 + 4) = 1" (pointer_expression "*(undefined4 *)(uVar5 + 4)" * (cast_expression "(undefined4 *)(uVar5 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 4)" ( (binary_expression "uVar5 + 4" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }" if (parenthesized_expression "(2 < param_3)" ( (binary_expression "2 < param_3" number_literal < identifier) )) (compound_statement "{\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }" { (expression_statement "puVar27 = (uint *)(uVar5 + 8);" (assignment_expression "puVar27 = (uint *)(uVar5 + 8)" identifier = (cast_expression "(uint *)(uVar5 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + 8)" ( (binary_expression "uVar5 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 2;" (assignment_expression "uVar7 = 2" identifier = number_literal) ;) (do_statement "do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);" do (compound_statement "{\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      }" { (expression_statement "cVar14 = *(char *)(param_2 + iVar15);" (assignment_expression "cVar14 = *(char *)(param_2 + iVar15)" identifier = (pointer_expression "*(char *)(param_2 + iVar15)" * (cast_expression "(char *)(param_2 + iVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15)" ( (binary_expression "param_2 + iVar15" identifier + identifier) ))))) ;) (while_statement "while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }" while (parenthesized_expression "(cVar14 != *(char *)(param_2 + uVar7 + -1))" ( (binary_expression "cVar14 != *(char *)(param_2 + uVar7 + -1)" identifier != (pointer_expression "*(char *)(param_2 + uVar7 + -1)" * (cast_expression "(char *)(param_2 + uVar7 + -1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + uVar7 + -1)" ( (binary_expression "param_2 + uVar7 + -1" (binary_expression "param_2 + uVar7" identifier + identifier) + number_literal) ))))) )) (compound_statement "{\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }" { (if_statement "if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }" { (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "*puVar27 = uVar7;" (assignment_expression "*puVar27 = uVar7" (pointer_expression "*puVar27" * identifier) = identifier) ;) (goto_statement "goto LAB_0002d564;" goto statement_identifier ;) })) (expression_statement "iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);" (assignment_expression "iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4)" identifier = (binary_expression "iVar15 - *(int *)(uVar5 + iVar15 * 4)" identifier - (pointer_expression "*(int *)(uVar5 + iVar15 * 4)" * (cast_expression "(int *)(uVar5 + iVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + iVar15 * 4)" ( (binary_expression "uVar5 + iVar15 * 4" identifier + (binary_expression "iVar15 * 4" identifier * number_literal)) )))))) ;) (expression_statement "cVar14 = *(char *)(param_2 + iVar15);" (assignment_expression "cVar14 = *(char *)(param_2 + iVar15)" identifier = (pointer_expression "*(char *)(param_2 + iVar15)" * (cast_expression "(char *)(param_2 + iVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + iVar15)" ( (binary_expression "param_2 + iVar15" identifier + identifier) ))))) ;) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "*puVar27 = uVar7 - iVar15;" (assignment_expression "*puVar27 = uVar7 - iVar15" (pointer_expression "*puVar27" * identifier) = (binary_expression "uVar7 - iVar15" identifier - identifier)) ;) (labeled_statement "LAB_0002d564:\n        uVar7 = uVar7 + 1;" statement_identifier : (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;)) (expression_statement "puVar27 = puVar27 + 1;" (assignment_expression "puVar27 = puVar27 + 1" identifier = (binary_expression "puVar27 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_3 != uVar7)" ( (binary_expression "param_3 != uVar7" identifier != identifier) )) ;) })) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" * identifier) = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "bVar20 = *param_1;" (assignment_expression "bVar20 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" identifier = identifier) ;) (labeled_statement "LAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" statement_identifier : (if_statement "if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" if (parenthesized_expression "(bVar20 != 0)" ( (binary_expression "bVar20 != 0" identifier != number_literal) )) (compound_statement "{\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" { (while_statement "while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }" while (parenthesized_expression "(*(byte *)(param_2 + uVar7) != bVar20)" ( (binary_expression "*(byte *)(param_2 + uVar7) != bVar20" (pointer_expression "*(byte *)(param_2 + uVar7)" * (cast_expression "(byte *)(param_2 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + uVar7)" ( (binary_expression "param_2 + uVar7" identifier + identifier) )))) != identifier) )) (compound_statement "{\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }" { (if_statement "if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }" { (expression_statement "bVar20 = pbVar6[1];" (assignment_expression "bVar20 = pbVar6[1]" identifier = (subscript_expression "pbVar6[1]" identifier [ number_literal ])) ;) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002d580;" goto statement_identifier ;) })) (expression_statement "iVar15 = *(int *)(uVar5 + uVar7 * 4);" (assignment_expression "iVar15 = *(int *)(uVar5 + uVar7 * 4)" identifier = (pointer_expression "*(int *)(uVar5 + uVar7 * 4)" * (cast_expression "(int *)(uVar5 + uVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + uVar7 * 4)" ( (binary_expression "uVar5 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) ))))) ;) (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" identifier = (binary_expression "param_1 + iVar15" identifier + identifier)) ;) (expression_statement "uVar7 = uVar7 - iVar15;" (assignment_expression "uVar7 = uVar7 - iVar15" identifier = (binary_expression "uVar7 - iVar15" identifier - identifier)) ;) (if_statement "if (bVar20 == 0) goto LAB_0002d5b8;" if (parenthesized_expression "(bVar20 == 0)" ( (binary_expression "bVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002d5b8;" goto statement_identifier ;)) })) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (if_statement "if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }" if (parenthesized_expression "(param_3 == uVar7)" ( (binary_expression "param_3 == uVar7" identifier == identifier) )) (compound_statement "{\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }" { (expression_statement "*param_4 = param_1;" (assignment_expression "*param_4 = param_1" (pointer_expression "*param_4" * identifier) = identifier) ;) (goto_statement "goto LAB_0002d5b8;" goto statement_identifier ;) })) (expression_statement "bVar20 = pbVar6[1];" (assignment_expression "bVar20 = pbVar6[1]" identifier = (subscript_expression "pbVar6[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002d580;" goto statement_identifier ;) }))) (labeled_statement "LAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();" statement_identifier : (expression_statement "(*(code *)PTR_freea_000758e0)();" (call_expression "(*(code *)PTR_freea_000758e0)()" (parenthesized_expression "(*(code *)PTR_freea_000758e0)" ( (pointer_expression "*(code *)PTR_freea_000758e0" * (cast_expression "(code *)PTR_freea_000758e0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "pbVar6 = (byte *)0x1;" (assignment_expression "pbVar6 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (labeled_statement "LAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }" statement_identifier : (if_statement "if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }" if (parenthesized_expression "(local_14 == *(int *)pbVar28)" ( (binary_expression "local_14 == *(int *)pbVar28" identifier == (pointer_expression "*(int *)pbVar28" * (cast_expression "(int *)pbVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return pbVar6;\n  }" { (return_statement "return pbVar6;" return identifier ;) }))) (expression_statement "pcVar40 = FUN_0002d670;" (assignment_expression "pcVar40 = FUN_0002d670" identifier = identifier) ;) (expression_statement "puVar32 = PTR___stack_chk_fail_00075ba8;" (assignment_expression "puVar32 = PTR___stack_chk_fail_00075ba8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_00075ba8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00075ba8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00075ba8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00075ba8" * (cast_expression "(code *)PTR___stack_chk_fail_00075ba8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar24 = &DAT_000000b3;" (assignment_expression "pbVar24 = &DAT_000000b3" identifier = (pointer_expression "&DAT_000000b3" & identifier)) ;) (expression_statement "iVar15 = *(int *)(puVar32 + 0x47f48);" (assignment_expression "iVar15 = *(int *)(puVar32 + 0x47f48)" identifier = (pointer_expression "*(int *)(puVar32 + 0x47f48)" * (cast_expression "(int *)(puVar32 + 0x47f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x47f48)" ( (binary_expression "puVar32 + 0x47f48" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(puVar32 + 0x48360);" (assignment_expression "pcVar33 = *(code **)(puVar32 + 0x48360)" identifier = (pointer_expression "*(code **)(puVar32 + 0x48360)" * (cast_expression "(code **)(puVar32 + 0x48360)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + 0x48360)" ( (binary_expression "puVar32 + 0x48360" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);" (assignment_expression "pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(puVar32 + 0x47f48) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar32 + 0x47f48) + -0x120)" ( (binary_expression "*(int *)(puVar32 + 0x47f48) + -0x120" (pointer_expression "*(int *)(puVar32 + 0x47f48)" * (cast_expression "(int *)(puVar32 + 0x47f48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x47f48)" ( (binary_expression "puVar32 + 0x47f48" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;" (assignment_expression "*(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10" (pointer_expression "*(undefined **)(puVar34 + -0x10)" * (cast_expression "(undefined **)(puVar34 + -0x10)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x10)" ( (binary_expression "puVar34 + -0x10" identifier + number_literal) )))) = (binary_expression "puVar32 + 0x4ff10" identifier + number_literal)) ;) (expression_statement "*(code **)(puVar34 + -4) = pcVar40;" (assignment_expression "*(code **)(puVar34 + -4) = pcVar40" (pointer_expression "*(code **)(puVar34 + -4)" * (cast_expression "(code **)(puVar34 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -4)" ( (binary_expression "puVar34 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar41 = 0x2d6ac;" (assignment_expression "uVar41 = 0x2d6ac" identifier = number_literal) ;) (expression_statement "iVar15 = iVar15 + -0x114;" (assignment_expression "iVar15 = iVar15 + -0x114" identifier = (binary_expression "iVar15 + -0x114" identifier + number_literal)) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar35 = puVar34 + -0x128;" (assignment_expression "puVar35 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar38 = puVar34 + -0x128;" (assignment_expression "puVar38 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar39 = puVar34 + -0x128;" (assignment_expression "puVar39 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x4853c)" identifier = (pointer_expression "*(undefined4 **)(pcVar33 + 0x4853c)" * (cast_expression "(undefined4 **)(pcVar33 + 0x4853c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x4853c)" ( (binary_expression "pcVar33 + 0x4853c" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x48238);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x48238)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x48238)" * (cast_expression "(code **)(pcVar33 + 0x48238)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x48238)" ( (binary_expression "pcVar33 + 0x48238" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 **)(puVar34 + -0x28) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar34 + -0x28) = auStack_38" (pointer_expression "*(undefined1 **)(puVar34 + -0x28)" * (cast_expression "(undefined1 **)(puVar34 + -0x28)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x28)" ( (binary_expression "puVar34 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x2c) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar34 + -0x2c) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar34 + -0x2c)" * (cast_expression "(undefined4 *)(puVar34 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x2c)" ( (binary_expression "puVar34 + -0x2c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 **)(puVar34 + -0x10c) = puVar8;" (assignment_expression "*(undefined4 **)(puVar34 + -0x10c) = puVar8" (pointer_expression "*(undefined4 **)(puVar34 + -0x10c)" * (cast_expression "(undefined4 **)(puVar34 + -0x10c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x10c)" ( (binary_expression "puVar34 + -0x10c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;" (assignment_expression "*(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4" (pointer_expression "*(code **)(puVar34 + -0x118)" * (cast_expression "(code **)(puVar34 + -0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4fed4" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar34 + -0x108) = iVar15;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar15" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x24) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x24) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x24)" * (cast_expression "(undefined4 *)(puVar34 + -0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x24)" ( (binary_expression "puVar34 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x30) = unaff_s6;" (assignment_expression "*(byte **)(puVar34 + -0x30) = unaff_s6" (pointer_expression "*(byte **)(puVar34 + -0x30)" * (cast_expression "(byte **)(puVar34 + -0x30)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x30)" ( (binary_expression "puVar34 + -0x30" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x34) = unaff_s5;" (assignment_expression "*(byte **)(puVar34 + -0x34) = unaff_s5" (pointer_expression "*(byte **)(puVar34 + -0x34)" * (cast_expression "(byte **)(puVar34 + -0x34)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x34)" ( (binary_expression "puVar34 + -0x34" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x38) = unaff_s4;" (assignment_expression "*(byte **)(puVar34 + -0x38) = unaff_s4" (pointer_expression "*(byte **)(puVar34 + -0x38)" * (cast_expression "(byte **)(puVar34 + -0x38)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x38)" ( (binary_expression "puVar34 + -0x38" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar34 + -0x3c) = unaff_s3;" (assignment_expression "*(undefined1 **)(puVar34 + -0x3c) = unaff_s3" (pointer_expression "*(undefined1 **)(puVar34 + -0x3c)" * (cast_expression "(undefined1 **)(puVar34 + -0x3c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x3c)" ( (binary_expression "puVar34 + -0x3c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar34 + -0x40) = unaff_s2;" (assignment_expression "*(int *)(puVar34 + -0x40) = unaff_s2" (pointer_expression "*(int *)(puVar34 + -0x40)" * (cast_expression "(int *)(puVar34 + -0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x40)" ( (binary_expression "puVar34 + -0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x44) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0x44) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0x44)" * (cast_expression "(byte **)(puVar34 + -0x44)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x44)" ( (binary_expression "puVar34 + -0x44" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x48) = param_1;" (assignment_expression "*(byte **)(puVar34 + -0x48) = param_1" (pointer_expression "*(byte **)(puVar34 + -0x48)" * (cast_expression "(byte **)(puVar34 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x48)" ( (binary_expression "puVar34 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar34 + -0x110) = pbVar24;" (assignment_expression "*(byte **)(puVar34 + -0x110) = pbVar24" (pointer_expression "*(byte **)(puVar34 + -0x110)" * (cast_expression "(byte **)(puVar34 + -0x110)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x110)" ( (binary_expression "puVar34 + -0x110" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x4c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar34 + -0x4c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar34 + -0x4c)" * (cast_expression "(undefined4 *)(puVar34 + -0x4c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x4c)" ( (binary_expression "puVar34 + -0x4c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "uVar5 = (*pcVar40)(pbVar23);" (assignment_expression "uVar5 = (*pcVar40)(pbVar23)" identifier = (call_expression "(*pcVar40)(pbVar23)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(pbVar23)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);" (assignment_expression "pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20)" identifier = (cast_expression "(byte *)((ulonglong)uVar5 * 0x2c >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar5 * 0x2c >> 0x20)" ( (binary_expression "(ulonglong)uVar5 * 0x2c >> 0x20" (binary_expression "(ulonglong)uVar5 * 0x2c" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * number_literal) >> number_literal) )))) ;) (expression_statement "*(uint *)(puVar34 + -0x104) = uVar5;" (assignment_expression "*(uint *)(puVar34 + -0x104) = uVar5" (pointer_expression "*(uint *)(puVar34 + -0x104)" * (cast_expression "(uint *)(puVar34 + -0x104)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar36 = puVar34 + -0x128;" (assignment_expression "puVar36 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }" if (parenthesized_expression "((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0))" ( (binary_expression "(-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)" (parenthesized_expression "(-1 < (int)((ulonglong)uVar5 * 0x2c))" ( (binary_expression "-1 < (int)((ulonglong)uVar5 * 0x2c)" number_literal < (cast_expression "(int)((ulonglong)uVar5 * 0x2c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar5 * 0x2c)" ( (binary_expression "(ulonglong)uVar5 * 0x2c" (cast_expression "(ulonglong)uVar5" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * number_literal) )))) )) && (parenthesized_expression "(pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)" ( (comma_expression "pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0" (assignment_expression "pbVar24 = pbVar43" identifier = identifier) , (comma_expression "puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0" (assignment_expression "puVar36 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) , (binary_expression "pbVar43 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }" { (if_statement "if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" if (parenthesized_expression "((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1)" ( (binary_expression "(uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1" (call_expression "(uint)(*(int *)(puVar34 + -0x104) * 0x2c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(puVar34 + -0x104) * 0x2c)" ( (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) * number_literal) ))) < number_literal) )) (compound_statement "{\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }" { (expression_statement "iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);" (assignment_expression "iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" identifier = (unary_expression "-(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" - (parenthesized_expression "(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" ( (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8" (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c + 0x16U" (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar35 = puVar34 + iVar9 + -0x128;" (assignment_expression "puVar35 = puVar34 + iVar9 + -0x128" identifier = (binary_expression "puVar34 + iVar9 + -0x128" (binary_expression "puVar34 + iVar9" identifier + identifier) + number_literal)) ;) (expression_statement "param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);" (assignment_expression "param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" identifier = (cast_expression "(byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" ( (binary_expression "(uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0" (call_expression "(uint)(puVar34 + iVar9 + -0x109)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar34 + iVar9 + -0x109)" ( (binary_expression "puVar34 + iVar9 + -0x109" (binary_expression "puVar34 + iVar9" identifier + identifier) + number_literal) ))) & number_literal) )))) ;) }) (else_clause "else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" else (compound_statement "{\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" { (expression_statement "param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();" (assignment_expression "param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))()" identifier = (cast_expression "(byte *)(**(code **)(iVar15 + -0x7ca4))()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar15 + -0x7ca4))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7ca4))" ( (pointer_expression "**(code **)(iVar15 + -0x7ca4)" * (pointer_expression "*(code **)(iVar15 + -0x7ca4)" * (cast_expression "(code **)(iVar15 + -0x7ca4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7ca4)" ( (binary_expression "iVar15 + -0x7ca4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) }))) (expression_statement "pbVar24 = pbVar43;" (assignment_expression "pbVar24 = pbVar43" identifier = identifier) ;) (expression_statement "puVar36 = puVar35;" (assignment_expression "puVar36 = puVar35" identifier = identifier) ;) (if_statement "if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }" if (parenthesized_expression "(param_1 != (byte *)0x0)" ( (binary_expression "param_1 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }" { (expression_statement "unaff_s3 = puVar34 + -0xf0;" (assignment_expression "unaff_s3 = puVar34 + -0xf0" identifier = (binary_expression "puVar34 + -0xf0" identifier + number_literal)) ;) (expression_statement "uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" (assignment_expression "uVar41 = *(undefined4 *)(iVar15 + -0x7c98)" identifier = (pointer_expression "*(undefined4 *)(iVar15 + -0x7c98)" * (cast_expression "(undefined4 *)(iVar15 + -0x7c98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7c98)" ( (binary_expression "iVar15 + -0x7c98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xf0)" * (cast_expression "(undefined4 *)(puVar34 + -0xf0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xf0)" ( (binary_expression "puVar34 + -0xf0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "unaff_s2 = 1;" (assignment_expression "unaff_s2 = 1" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xec) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xec) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xec)" * (cast_expression "(undefined4 *)(puVar34 + -0xec)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xec)" ( (binary_expression "puVar34 + -0xec" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x100) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x100) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x100)" * (cast_expression "(undefined4 *)(puVar34 + -0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s6 = puVar34 + -0xd8;" (assignment_expression "unaff_s6 = puVar34 + -0xd8" identifier = (binary_expression "puVar34 + -0xd8" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar34 + -0xe4) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0xe4) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0xf4] = 0;" (assignment_expression "puVar34[-0xf4] = 0" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s5 = puVar34 + -0xd4;" (assignment_expression "unaff_s5 = puVar34 + -0xd4" identifier = (binary_expression "puVar34 + -0xd4" identifier + number_literal)) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28)" identifier = (cast_expression "(byte *)(*(int *)(puVar34 + -0x104) * 0x28)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x104) * 0x28)" ( (binary_expression "*(int *)(puVar34 + -0x104) * 0x28" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) * number_literal) )))) ;) (expression_statement "puVar34[-0xe8] = 0;" (assignment_expression "puVar34[-0xe8] = 0" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xfc)" * (cast_expression "(byte **)(puVar34 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) = (binary_expression "param_1 + (int)pbVar28" identifier + (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "unaff_s4 = param_1;" (assignment_expression "unaff_s4 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );" do (compound_statement "{\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      }" { (if_statement "if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" if (parenthesized_expression "(puVar34[-0xf4] == '\0')" ( (binary_expression "puVar34[-0xf4] == '\0'" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }" { (expression_statement "pbVar6 = (byte *)(uint)*pbVar23;" (assignment_expression "pbVar6 = (byte *)(uint)*pbVar23" identifier = (binary_expression "(byte *)(uint)*pbVar23" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar23 >> 5) * 4" (call_expression "(uint)(*pbVar23 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar23 >> 5)" ( (binary_expression "*pbVar23 >> 5" (pointer_expression "*pbVar23" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pbVar6 & 0x1f)" ( (binary_expression "(uint)pbVar6 & 0x1f" (cast_expression "(uint)pbVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }" { (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s3)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s3)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }" { (expression_statement "puVar34[-0xf4] = 1;" (assignment_expression "puVar34[-0xf4] = 1" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d840;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar23;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar23" identifier = (cast_expression "(byte *)(int)(char)*pbVar23" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar23" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar23" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar23" * identifier))))) ;) (expression_statement "puVar34[-0xdc] = 1;" (assignment_expression "puVar34[-0xdc] = 1" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xd8) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xd8) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xd8)" * (cast_expression "(byte **)(puVar34 + -0xd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;" if (parenthesized_expression "(pbVar28 == (byte *)0x0)" ( (binary_expression "pbVar28 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002d8cc;" goto statement_identifier ;)) (labeled_statement "LAB_0002d7f8:\n          bVar20 = 1;" statement_identifier : (expression_statement "bVar20 = 1;" (assignment_expression "bVar20 = 1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" else (compound_statement "{\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" { (labeled_statement "LAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar43 = (byte *)strnlen1(pbVar23,uVar41);" (assignment_expression "pbVar43 = (byte *)strnlen1(pbVar23,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar23,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar23,uVar41)" identifier (argument_list "(pbVar23,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3)" identifier = (call_expression "rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3)" identifier (argument_list "(unaff_s6,pbVar23,pbVar43,unaff_s3)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0xe0) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xe0) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xe0)" * (cast_expression "(int *)(puVar34 + -0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" { (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "puVar34[-0xdc] = 0;" (assignment_expression "puVar34[-0xdc] = 0" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" else (compound_statement "{\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" { (if_statement "if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }" { (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }" { (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xd8);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xd8)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xd8)" * (cast_expression "(byte **)(puVar34 + -0xd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;" if (parenthesized_expression "(**(char **)(puVar34 + -0xe4) != '\0')" ( (binary_expression "**(char **)(puVar34 + -0xe4) != '\0'" (pointer_expression "**(char **)(puVar34 + -0xe4)" * (pointer_expression "*(char **)(puVar34 + -0xe4)" * (cast_expression "(char **)(puVar34 + -0xe4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (if_statement "if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }" { (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" identifier = (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_0002dc58;" goto statement_identifier ;) })) }) (else_clause "else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" else (compound_statement "{\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xd8);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xd8)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xd8)" * (cast_expression "(byte **)(puVar34 + -0xd8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar34[-0xdc] = 1;" (assignment_expression "puVar34[-0xdc] = 1" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s3);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s3)" identifier = (call_expression "(*pcVar33)(unaff_s3)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s3)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                puVar34[-0xf4] = 0;\n              }" { (expression_statement "puVar34[-0xf4] = 0;" (assignment_expression "puVar34[-0xf4] = 0" (subscript_expression "puVar34[-0xf4]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002d7f8;" goto statement_identifier ;)) (goto_statement "goto LAB_0002d8cc;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar34 + -0xe4))" ( (pointer_expression "*(undefined4 *)(puVar34 + -0xe4)" * (cast_expression "(undefined4 *)(puVar34 + -0xe4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" * (cast_expression "(undefined4 *)(puVar34 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) )))) = identifier) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "puVar34[-0xdc] = 0;" (assignment_expression "puVar34[-0xdc] = 0" (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (expression_statement "pbVar43 = *(byte **)(puVar34 + -0xe0);" (assignment_expression "pbVar43 = *(byte **)(puVar34 + -0xe0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xe0)" * (cast_expression "(byte **)(puVar34 + -0xe0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) ))))) ;) (if_statement "if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" if (parenthesized_expression "(*(byte **)(puVar34 + -0xe4) == unaff_s5)" ( (binary_expression "*(byte **)(puVar34 + -0xe4) == unaff_s5" (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5)" identifier = (call_expression "(**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5)" (parenthesized_expression "(**(code **)(iVar15 + -0x7990))" ( (pointer_expression "**(code **)(iVar15 + -0x7990)" * (pointer_expression "*(code **)(iVar15 + -0x7990)" * (cast_expression "(code **)(iVar15 + -0x7990)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7990)" ( (binary_expression "iVar15 + -0x7990" identifier + number_literal) ))))) )) (argument_list "(unaff_s4 + 0x10,unaff_s5)" ( (binary_expression "unaff_s4 + 0x10" identifier + number_literal) , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "bVar20 = puVar34[-0xdc];" (assignment_expression "bVar20 = puVar34[-0xdc]" identifier = (subscript_expression "puVar34[-0xdc]" identifier [ number_literal ])) ;) (expression_statement "pbVar43 = *(byte **)(puVar34 + -0xe0);" (assignment_expression "pbVar43 = *(byte **)(puVar34 + -0xe0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xe0)" * (cast_expression "(byte **)(puVar34 + -0xe0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe0)" ( (binary_expression "puVar34 + -0xe0" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)unaff_s4 = uVar41;" (assignment_expression "*(undefined4 *)unaff_s4 = uVar41" (pointer_expression "*(undefined4 *)unaff_s4" * (cast_expression "(undefined4 *)unaff_s4" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) }) (else_clause "else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" else (compound_statement "{\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" { (expression_statement "*(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);" (assignment_expression "*(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4)" (pointer_expression "*(byte **)unaff_s4" * (cast_expression "(byte **)unaff_s4" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) ))))) ;) }))) (expression_statement "*(byte **)(unaff_s4 + 4) = pbVar43;" (assignment_expression "*(byte **)(unaff_s4 + 4) = pbVar43" (pointer_expression "*(byte **)(unaff_s4 + 4)" * (cast_expression "(byte **)(unaff_s4 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_s4 + 4)" ( (binary_expression "unaff_s4 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s4[8] = bVar20;" (assignment_expression "unaff_s4[8] = bVar20" (subscript_expression "unaff_s4[8]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }" if (parenthesized_expression "(bVar20 != 0)" ( (binary_expression "bVar20 != 0" identifier != number_literal) )) (compound_statement "{\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }" { (expression_statement "*(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);" (assignment_expression "*(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8)" (pointer_expression "*(undefined4 *)(unaff_s4 + 0xc)" * (cast_expression "(undefined4 *)(unaff_s4 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s4 + 0xc)" ( (binary_expression "unaff_s4 + 0xc" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(puVar34 + -0xd8)" * (cast_expression "(undefined4 *)(puVar34 + -0xd8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xd8)" ( (binary_expression "puVar34 + -0xd8" identifier + number_literal) ))))) ;) })) (expression_statement "unaff_s4 = unaff_s4 + 0x28;" (assignment_expression "unaff_s4 = unaff_s4 + 0x28" identifier = (binary_expression "unaff_s4 + 0x28" identifier + number_literal)) ;) (expression_statement "puVar34[-0xe8] = 0;" (assignment_expression "puVar34[-0xe8] = 0" (subscript_expression "puVar34[-0xe8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);" (assignment_expression "pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4)" identifier = (binary_expression "pbVar43 + *(int *)(puVar34 + -0xe4)" identifier + (pointer_expression "*(int *)(puVar34 + -0xe4)" * (cast_expression "(int *)(puVar34 + -0xe4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))))) ;) (expression_statement "*(byte **)(puVar34 + -0xe4) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0xe4) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0xe4)" * (cast_expression "(byte **)(puVar34 + -0xe4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xe4)" ( (binary_expression "puVar34 + -0xe4" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) })) (expression_statement "pbVar43 = (byte *)0x0;" (assignment_expression "pbVar43 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);" statement_identifier : (expression_statement "pbVar10 = *(byte **)(puVar34 + -0x4c);" (assignment_expression "pbVar10 = *(byte **)(puVar34 + -0x4c)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x4c)" * (cast_expression "(byte **)(puVar34 + -0x4c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x4c)" ( (binary_expression "puVar34 + -0x4c" identifier + number_literal) ))))) ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79d8)" * (cast_expression "(code **)(iVar15 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79d8)" ( (binary_expression "iVar15 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "puVar35 = puVar36;" (assignment_expression "puVar35 = puVar36" identifier = identifier) ;) (if_statement "if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }" if (parenthesized_expression "(pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c))" ( (binary_expression "pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)" identifier == (cast_expression "(byte *)**(undefined4 **)(puVar34 + -0x10c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar34 + -0x10c)" * (pointer_expression "*(undefined4 **)(puVar34 + -0x10c)" * (cast_expression "(undefined4 **)(puVar34 + -0x10c)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x10c)" ( (binary_expression "puVar34 + -0x10c" identifier + number_literal) ))))))) )) (compound_statement "{\n    return pbVar43;\n  }" { (return_statement "return pbVar43;" return identifier ;) })) (goto_statement "goto LAB_0002e0e0;" goto statement_identifier ;) (labeled_statement "LAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);" statement_identifier : (expression_statement "uVar5 = *(uint *)(puVar34 + -0x104);" (assignment_expression "uVar5 = *(uint *)(puVar34 + -0x104)" identifier = (pointer_expression "*(uint *)(puVar34 + -0x104)" * (cast_expression "(uint *)(puVar34 + -0x104)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) ))))) ;)) (expression_statement "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;" (assignment_expression "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1" (pointer_expression "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4)" * (cast_expression "(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + 4)" ( (binary_expression "*(int *)(puVar34 + -0xfc) + 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) + number_literal) )))) = number_literal) ;) (if_statement "if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }" if (parenthesized_expression "(uVar5 < 3)" ( (binary_expression "uVar5 < 3" identifier < number_literal) )) (compound_statement "{\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }" { (labeled_statement "LAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" statement_identifier : (expression_statement "uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" (assignment_expression "uVar41 = *(undefined4 *)(iVar15 + -0x7c98)" identifier = (pointer_expression "*(undefined4 *)(iVar15 + -0x7c98)" * (cast_expression "(undefined4 *)(iVar15 + -0x7c98)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7c98)" ( (binary_expression "iVar15 + -0x7c98" identifier + number_literal) ))))) ;)) (expression_statement "unaff_s4 = puVar34 + -0xb8;" (assignment_expression "unaff_s4 = puVar34 + -0xb8" identifier = (binary_expression "puVar34 + -0xb8" identifier + number_literal)) ;) (expression_statement "uVar16 = *(undefined4 *)(puVar34 + -0x108);" (assignment_expression "uVar16 = *(undefined4 *)(puVar34 + -0x108)" identifier = (pointer_expression "*(undefined4 *)(puVar34 + -0x108)" * (cast_expression "(undefined4 *)(puVar34 + -0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = puVar34 + -0x80;" (assignment_expression "unaff_s6 = puVar34 + -0x80" identifier = (binary_expression "puVar34 + -0x80" identifier + number_literal)) ;) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" identifier = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xb8) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xb8) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xb8)" * (cast_expression "(undefined4 *)(puVar34 + -0xb8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xb8)" ( (binary_expression "puVar34 + -0xb8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x100) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x100) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x100)" * (cast_expression "(undefined4 *)(puVar34 + -0x100)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s3 = puVar34 + -0x68;" (assignment_expression "unaff_s3 = puVar34 + -0x68" identifier = (binary_expression "puVar34 + -0x68" identifier + number_literal)) ;) (expression_statement "unaff_s5 = puVar34 + -0xa0;" (assignment_expression "unaff_s5 = puVar34 + -0xa0" identifier = (binary_expression "puVar34 + -0xa0" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xb4) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xb4) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xb4)" * (cast_expression "(undefined4 *)(puVar34 + -0xb4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xb4)" ( (binary_expression "puVar34 + -0xb4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0x80)" * (cast_expression "(undefined4 *)(puVar34 + -0x80)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x80)" ( (binary_expression "puVar34 + -0x80" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xac) = uVar16;" (assignment_expression "*(undefined4 *)(puVar34 + -0xac) = uVar16" (pointer_expression "*(undefined4 *)(puVar34 + -0xac)" * (cast_expression "(undefined4 *)(puVar34 + -0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "**(undefined4 **)(puVar34 + -0x110) = 0;" (assignment_expression "**(undefined4 **)(puVar34 + -0x110) = 0" (pointer_expression "**(undefined4 **)(puVar34 + -0x110)" * (pointer_expression "*(undefined4 **)(puVar34 + -0x110)" * (cast_expression "(undefined4 **)(puVar34 + -0x110)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x110)" ( (binary_expression "puVar34 + -0x110" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "cVar14 = '\0';" (assignment_expression "cVar14 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x7c) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0x7c) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0x7c)" * (cast_expression "(undefined4 *)(puVar34 + -0x7c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x7c)" ( (binary_expression "puVar34 + -0x7c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x74) = uVar16;" (assignment_expression "*(undefined4 *)(puVar34 + -0x74) = uVar16" (pointer_expression "*(undefined4 *)(puVar34 + -0x74)" * (cast_expression "(undefined4 *)(puVar34 + -0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0x84] = 0;" (assignment_expression "puVar34[-0x84] = 0" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar24 = pbVar43;" (assignment_expression "pbVar24 = pbVar43" identifier = identifier) ;) (labeled_statement "joined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" statement_identifier : (if_statement "if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" { (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002daa0;" goto statement_identifier ;) }))) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" identifier = (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;" if (parenthesized_expression "(puVar34[-0x6c] != '\0')" ( (binary_expression "puVar34[-0x6c] != '\0'" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002dae8;" goto statement_identifier ;)) (labeled_statement "LAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;" statement_identifier : (expression_statement "iVar11 = unaff_s2 * 4;" (assignment_expression "iVar11 = unaff_s2 * 4" identifier = (binary_expression "unaff_s2 * 4" identifier * number_literal)) ;)) (expression_statement "pbVar43 = param_1 + unaff_s2 * 0x28;" (assignment_expression "pbVar43 = param_1 + unaff_s2 * 0x28" identifier = (binary_expression "param_1 + unaff_s2 * 0x28" identifier + (binary_expression "unaff_s2 * 0x28" identifier * number_literal))) ;) (labeled_statement "LAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);" statement_identifier : (expression_statement "pbVar28 = *(byte **)(puVar34 + -0x70);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0x70)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x70)" * (cast_expression "(byte **)(puVar34 + -0x70)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) ))))) ;)) (expression_statement "pbVar24 = pbVar28;" (assignment_expression "pbVar24 = pbVar28" identifier = identifier) ;) (if_statement "if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" if (parenthesized_expression "(*(byte **)(pbVar43 + 4) == pbVar28)" ( (binary_expression "*(byte **)(pbVar43 + 4) == pbVar28" (pointer_expression "*(byte **)(pbVar43 + 4)" * (cast_expression "(byte **)(pbVar43 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar43 + 4)" ( (binary_expression "pbVar43 + 4" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }" { (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79c0);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79c0)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) ;) (expression_statement "uVar41 = *(undefined4 *)pbVar43;" (assignment_expression "uVar41 = *(undefined4 *)pbVar43" identifier = (pointer_expression "*(undefined4 *)pbVar43" * (cast_expression "(undefined4 *)pbVar43" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(int *)(puVar34 + -0x108) = iVar11;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar11" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "iVar9 = (*pcVar33)(uVar41);" (assignment_expression "iVar9 = (*pcVar33)(uVar41)" identifier = (call_expression "(*pcVar33)(uVar41)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(uVar41)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "iVar11 = *(int *)(puVar34 + -0x108);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0x108)" identifier = (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002db1c;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002db1c;" goto statement_identifier ;)) (expression_statement "cVar14 = puVar34[-0xb0];" (assignment_expression "cVar14 = puVar34[-0xb0]" identifier = (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s2 == 0) goto LAB_0002da1c;" if (parenthesized_expression "(unaff_s2 == 0)" ( (binary_expression "unaff_s2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002da1c;" goto statement_identifier ;)) (expression_statement "iVar9 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;) }) (else_clause "else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" else (compound_statement "{\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" { (labeled_statement "LAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;)) (if_statement "if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }" if (parenthesized_expression "(unaff_s2 == 0)" ( (binary_expression "unaff_s2 == 0" identifier == number_literal) )) (compound_statement "{\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }" { (expression_statement "cVar14 = puVar34[-0xb0];" (assignment_expression "cVar14 = puVar34[-0xb0]" identifier = (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" statement_identifier : (if_statement "if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }" { (expression_statement "pbVar6 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar6 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }" if (parenthesized_expression "(puVar34[-0xbc] == '\0')" ( (binary_expression "puVar34[-0xbc] == '\0'" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }" { (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }" { (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar6;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar6" identifier = (cast_expression "(byte *)(int)(char)*pbVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar6" * identifier))))) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xa0) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xa0) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar6 = (byte *)(uint)bVar20;" (assignment_expression "pbVar6 = (byte *)(uint)bVar20" identifier = (cast_expression "(byte *)(uint)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (goto_statement "goto LAB_0002da70;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "pbVar28 = pbVar6;" (assignment_expression "pbVar28 = pbVar6" identifier = identifier) ;) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;)) (expression_statement "puVar34[-0xbc] = 1;" (assignment_expression "puVar34[-0xbc] = 1" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier (argument_list "(unaff_s5,pbVar6,pbVar24,unaff_s4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0xa8) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xa8) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto LAB_0002da7c;" goto statement_identifier ;) })) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pbVar28)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pbVar28)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002da7c;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }" { (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "bVar20 = *pbVar28;" (assignment_expression "bVar20 = *pbVar28" identifier = (pointer_expression "*pbVar28" * identifier)) ;) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (bVar20 != 0) goto LAB_0002e098;" if (parenthesized_expression "(bVar20 != 0)" ( (binary_expression "bVar20 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (if_statement "if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }" { (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" identifier = (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (goto_statement "goto LAB_0002dc58;" goto statement_identifier ;) })) }) (else_clause "else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" else (compound_statement "{\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar34[-0xbc] = 0;\n          }" { (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b80)" * (cast_expression "(code **)(iVar15 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b80)" ( (binary_expression "iVar15 + -0x7b80" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;" if (parenthesized_expression "(pbVar28 == (byte *)0x0)" ( (binary_expression "pbVar28 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ddd4;" goto statement_identifier ;)) }) (else_clause "else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" else (compound_statement "{\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0xa4] != '\0') goto LAB_0002da70;" if (parenthesized_expression "(puVar34[-0xa4] != '\0')" ( (binary_expression "puVar34[-0xa4] != '\0'" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002da70;" goto statement_identifier ;)) })))) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002da7c:\n        puVar34[-0xb0] = 0;" statement_identifier : (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8)" (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = (binary_expression "pbVar28 + *(int *)(puVar34 + -0xa8)" identifier + (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))))) ;) (expression_statement "pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));" (assignment_expression "pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" identifier = (cast_expression "(byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" ( (binary_expression "*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70)" (pointer_expression "*(int *)(puVar34 + -0x74)" * (cast_expression "(int *)(puVar34 + -0x74)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar34 + -0x70)" * (cast_expression "(int *)(puVar34 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar34 + -0x74) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0x74) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;" statement_identifier : (if_statement "if (puVar34[-0x84] != '\0') goto LAB_0002dc78;" if (parenthesized_expression "(puVar34[-0x84] != '\0')" ( (binary_expression "puVar34[-0x84] != '\0'" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002dc78;" goto statement_identifier ;))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar23 >> 5) * 4" (call_expression "(uint)(*pbVar23 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar23 >> 5)" ( (binary_expression "*pbVar23 >> 5" (pointer_expression "*pbVar23" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar23 & 0x1f)" ( (binary_expression "*pbVar23 & 0x1f" (pointer_expression "*pbVar23" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }" { (while_statement "while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }" { (expression_statement "iVar9 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s6)" identifier = (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;)) (expression_statement "puVar34[-0x84] = 1;" (assignment_expression "puVar34[-0x84] = 1" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar23,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar23,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar23,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar23,uVar41)" identifier (argument_list "(pbVar23,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6)" identifier = (call_expression "rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6)" identifier (argument_list "(unaff_s3,pbVar23,pbVar24,unaff_s6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0x70) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x70) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x70)" * (cast_expression "(int *)(puVar34 + -0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) goto LAB_0002df14;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0002df14;" goto statement_identifier ;)) (if_statement "if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar34 + -0x74))" ( (pointer_expression "*(undefined4 *)(puVar34 + -0x74)" * (cast_expression "(undefined4 *)(puVar34 + -0x74)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0x6c] = 0;" (assignment_expression "puVar34[-0x6c] = 0" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d9f0;" goto statement_identifier ;) })) (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) break;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" identifier = (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) ))))) ;) (if_statement "if (*pbVar23 != 0) goto LAB_0002e098;" if (parenthesized_expression "(*pbVar23 != 0)" ( (binary_expression "*pbVar23 != 0" (pointer_expression "*pbVar23" * identifier) != number_literal) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (if_statement "if (iVar9 == 0) goto LAB_0002dcdc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002dcdc;" goto statement_identifier ;)) (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" identifier = (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (labeled_statement "LAB_0002dc58:\n            FUN_0002d670();" statement_identifier : (expression_statement "FUN_0002d670();" (call_expression "FUN_0002d670()" identifier (argument_list "()" ( ))) ;)) })) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" identifier = (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;)) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(int *)(puVar34 + -0x108) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0x6c] = 1;" (assignment_expression "puVar34[-0x6c] = 1" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar11 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar11 = (*pcVar33)(unaff_s6)" identifier = (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(puVar34 + -0x108);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x108)" identifier = (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar34[-0x84] = 0;\n          }" { (expression_statement "puVar34[-0x84] = 0;" (assignment_expression "puVar34[-0x84] = 0" (subscript_expression "puVar34[-0x84]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" else (compound_statement "{\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" { (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar9 = (int)(char)*pbVar23;" (assignment_expression "iVar9 = (int)(char)*pbVar23" identifier = (cast_expression "(int)(char)*pbVar23" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar23" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar23" * identifier)))) ;) (expression_statement "puVar34[-0x6c] = 1;" (assignment_expression "puVar34[-0x6c] = 1" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar34 + -0x68) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x68) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x68)" * (cast_expression "(int *)(puVar34 + -0x68)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x68)" ( (binary_expression "puVar34 + -0x68" identifier + number_literal) )))) = identifier) ;) }))) (labeled_statement "LAB_0002dae8:\n        iVar11 = unaff_s2 * 4;" statement_identifier : (expression_statement "iVar11 = unaff_s2 * 4;" (assignment_expression "iVar11 = unaff_s2 * 4" identifier = (binary_expression "unaff_s2 * 4" identifier * number_literal)) ;)) (if_statement "if (iVar9 == 0) goto LAB_0002db40;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002db40;" goto statement_identifier ;)) (expression_statement "pbVar43 = param_1 + unaff_s2 * 0x28;" (assignment_expression "pbVar43 = param_1 + unaff_s2 * 0x28" identifier = (binary_expression "param_1 + unaff_s2 * 0x28" identifier + (binary_expression "unaff_s2 * 0x28" identifier * number_literal))) ;) (if_statement "if (pbVar43[8] == 0) goto LAB_0002da00;" if (parenthesized_expression "(pbVar43[8] == 0)" ( (binary_expression "pbVar43[8] == 0" (subscript_expression "pbVar43[8]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0002da00;" goto statement_identifier ;)) (if_statement "if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;" if (parenthesized_expression "(*(int *)(pbVar43 + 0xc) == iVar9)" ( (binary_expression "*(int *)(pbVar43 + 0xc) == iVar9" (pointer_expression "*(int *)(pbVar43 + 0xc)" * (cast_expression "(int *)(pbVar43 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar43 + 0xc)" ( (binary_expression "pbVar43 + 0xc" identifier + number_literal) )))) == identifier) )) (goto_statement "goto code_r0x0002db14;" goto statement_identifier ;)) (goto_statement "goto LAB_0002da10;" goto statement_identifier ;) })) }))) (expression_statement "pbVar23 = *(byte **)(iVar9 + iVar11);" (assignment_expression "pbVar23 = *(byte **)(iVar9 + iVar11)" identifier = (pointer_expression "*(byte **)(iVar9 + iVar11)" * (cast_expression "(byte **)(iVar9 + iVar11)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar9 + iVar11)" ( (binary_expression "iVar9 + iVar11" identifier + identifier) ))))) ;) (expression_statement "*(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;" (assignment_expression "*(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23" (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) )))) = (binary_expression "unaff_s2 - (int)pbVar23" identifier - (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }" if (parenthesized_expression "(pbVar23 != (byte *)0x0)" ( (binary_expression "pbVar23 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }" { (if_statement "if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }" if (parenthesized_expression "(puVar34[-0xb0] != '\0')" ( (binary_expression "puVar34[-0xb0] != '\0'" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;" if (parenthesized_expression "(puVar34[-0xa4] != '\0')" ( (binary_expression "puVar34[-0xa4] != '\0'" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ddcc;" goto statement_identifier ;)) (goto_statement "goto LAB_0002dd64;" goto statement_identifier ;) })) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002dd80:\n      pbVar6 = pbVar28;" statement_identifier : (expression_statement "pbVar6 = pbVar28;" (assignment_expression "pbVar6 = pbVar28" identifier = identifier) ;)) (if_statement "if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;" if (parenthesized_expression "(puVar34[-0xbc] != '\0')" ( (binary_expression "puVar34[-0xbc] != '\0'" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ddf4;" goto statement_identifier ;)) (expression_statement "pbVar6 = (byte *)(uint)*pbVar28;" (assignment_expression "pbVar6 = (byte *)(uint)*pbVar28" identifier = (binary_expression "(byte *)(uint)*pbVar28" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;" if (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" ( (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" * (cast_expression "(int *)(puVar34 + -0x100)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x100)" ( (binary_expression "puVar34 + -0x100" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar28 >> 5) * 4" (call_expression "(uint)(*pbVar28 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar28 >> 5)" ( (binary_expression "*pbVar28 >> 5" (pointer_expression "*pbVar28" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pbVar6 & 0x1f)" ( (binary_expression "(uint)pbVar6 & 0x1f" (cast_expression "(uint)pbVar6" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002dddc;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar28;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar28" identifier = (cast_expression "(byte *)(int)(char)*pbVar28" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar28" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar28" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar28" * identifier))))) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0xa0) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xa0) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b80)" * (cast_expression "(code **)(iVar15 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b80)" ( (binary_expression "iVar15 + -0x7b80" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002dd64;" goto statement_identifier ;)) (labeled_statement "LAB_0002ddd4:\n      (*pcVar33)();" statement_identifier : (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);" statement_identifier : (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;)) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002e0bc;" goto statement_identifier ;)) (expression_statement "puVar34[-0xbc] = 1;" (assignment_expression "puVar34[-0xbc] = 1" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar6 = pbVar28;" (assignment_expression "pbVar6 = pbVar28" identifier = identifier) ;) (labeled_statement "LAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" identifier (argument_list "(unaff_s5,pbVar6,pbVar24,unaff_s4)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar34 + -0xa8) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xa8) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }" { (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" identifier = (cast_expression "(byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" ( (binary_expression "*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8)" (pointer_expression "*(int *)(puVar34 + -0xac)" * (cast_expression "(int *)(puVar34 + -0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto joined_r0x0002dea0;" goto statement_identifier ;) })) (expression_statement "pcVar30 = *(char **)(puVar34 + -0xac);" (assignment_expression "pcVar30 = *(char **)(puVar34 + -0xac)" identifier = (pointer_expression "*(char **)(puVar34 + -0xac)" * (cast_expression "(char **)(puVar34 + -0xac)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pcVar30)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002dd68;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }" { (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" * (cast_expression "(undefined4 *)(puVar34 + -0xa8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar30 != '\0') goto LAB_0002e098;" if (parenthesized_expression "(*pcVar30 != '\0')" ( (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e098;" goto statement_identifier ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (if_statement "if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto code_r0x0002def0;" goto statement_identifier ;)) }) (else_clause "else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" else (compound_statement "{\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" { (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" identifier = (pointer_expression "*(byte **)(puVar34 + -0xa0)" * (cast_expression "(byte **)(puVar34 + -0xa0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xa0)" ( (binary_expression "puVar34 + -0xa0" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) }))) (expression_statement "unaff_s2 = 1;" (assignment_expression "unaff_s2 = 1" identifier = number_literal) ;) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar34[-0xbc] = 0;\n      }" { (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ddcc;" goto statement_identifier ;) })) (expression_statement "cVar14 = puVar34[-0x78];" (assignment_expression "cVar14 = puVar34[-0x78]" identifier = (subscript_expression "puVar34[-0x78]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x0002d9dc;" goto statement_identifier ;) })) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "pbVar23 = (byte *)0x2;" (assignment_expression "pbVar23 = (byte *)0x2" identifier = (cast_expression "(byte *)0x2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar24 = param_1;" (assignment_expression "pbVar24 = param_1" identifier = identifier) ;) (labeled_statement "LAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];" statement_identifier : (expression_statement "pbVar28 = (byte *)(uint)pbVar24[0x30];" (assignment_expression "pbVar28 = (byte *)(uint)pbVar24[0x30]" identifier = (cast_expression "(byte *)(uint)pbVar24[0x30]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)pbVar24[0x30]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar24[0x30]" identifier [ number_literal ])))) ;)) (do_statement "do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );" do (compound_statement "{\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  }" { (expression_statement "pbVar10 = param_1 + iVar9 * 0x28;" (assignment_expression "pbVar10 = param_1 + iVar9 * 0x28" identifier = (binary_expression "param_1 + iVar9 * 0x28" identifier + (binary_expression "iVar9 * 0x28" identifier * number_literal))) ;) (if_statement "if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" if (parenthesized_expression "((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0))" ( (binary_expression "(pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)" (parenthesized_expression "(pbVar28 == (byte *)0x0)" ( (binary_expression "pbVar28 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pbVar10[8] == 0)" ( (binary_expression "pbVar10[8] == 0" (subscript_expression "pbVar10[8]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }" { (expression_statement "pbVar43 = *(byte **)(pbVar24 + 0x2c);" (assignment_expression "pbVar43 = *(byte **)(pbVar24 + 0x2c)" identifier = (pointer_expression "*(byte **)(pbVar24 + 0x2c)" * (cast_expression "(byte **)(pbVar24 + 0x2c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar24 + 0x2c)" ( (binary_expression "pbVar24 + 0x2c" identifier + number_literal) ))))) ;) (if_statement "if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" if (parenthesized_expression "(pbVar43 == *(byte **)(pbVar10 + 4))" ( (binary_expression "pbVar43 == *(byte **)(pbVar10 + 4)" identifier == (pointer_expression "*(byte **)(pbVar10 + 4)" * (cast_expression "(byte **)(pbVar10 + 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar10 + 4)" ( (binary_expression "pbVar10 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" { (expression_statement "pbVar6 = *(byte **)pbVar10;" (assignment_expression "pbVar6 = *(byte **)pbVar10" identifier = (pointer_expression "*(byte **)pbVar10" * (cast_expression "(byte **)pbVar10" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28))" identifier = (call_expression "(**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28))" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" ( (pointer_expression "**(code **)(iVar15 + -0x79c0)" * (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(pbVar24 + 0x28))" ( (pointer_expression "*(undefined4 *)(pbVar24 + 0x28)" * (cast_expression "(undefined4 *)(pbVar24 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar24 + 0x28)" ( (binary_expression "pbVar24 + 0x28" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }" { (expression_statement "iVar11 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002d964;" goto statement_identifier ;) })) })) }) (else_clause "else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" else (compound_statement "{\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" { (expression_statement "iVar11 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0xfc)" identifier = (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }" if (parenthesized_expression "(*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc))" ( (binary_expression "*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)" (pointer_expression "*(int *)(pbVar24 + 0x34)" * (cast_expression "(int *)(pbVar24 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar24 + 0x34)" ( (binary_expression "pbVar24 + 0x34" identifier + number_literal) )))) == (pointer_expression "*(int *)(pbVar10 + 0xc)" * (cast_expression "(int *)(pbVar10 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar10 + 0xc)" ( (binary_expression "pbVar10 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }" { (labeled_statement "LAB_0002d964:\n        iVar9 = iVar9 + 1;" statement_identifier : (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;)) (expression_statement "*(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;" (assignment_expression "*(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9" (pointer_expression "*(int *)(iVar11 + (int)pbVar23 * 4)" * (cast_expression "(int *)(iVar11 + (int)pbVar23 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + (int)pbVar23 * 4)" ( (binary_expression "iVar11 + (int)pbVar23 * 4" identifier + (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = (binary_expression "(int)pbVar23 - iVar9" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (goto_statement "goto LAB_0002d978;" goto statement_identifier ;) })) }))) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);" (assignment_expression "iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" identifier = (binary_expression "iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" identifier - (pointer_expression "*(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" * (cast_expression "(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" ( (binary_expression "*(int *)(puVar34 + -0xfc) + iVar9 * 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) + (binary_expression "iVar9 * 4" identifier * number_literal)) )))))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (expression_statement "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;" (assignment_expression "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23" (pointer_expression "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" * (cast_expression "(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" ( (binary_expression "*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" * (cast_expression "(int *)(puVar34 + -0xfc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xfc)" ( (binary_expression "puVar34 + -0xfc" identifier + number_literal) )))) + (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) = identifier) ;) (labeled_statement "LAB_0002d978:\n  pbVar23 = pbVar23 + 1;" statement_identifier : (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" identifier = (binary_expression "pbVar23 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar24 = pbVar24 + 0x28;" (assignment_expression "pbVar24 = pbVar24 + 0x28" identifier = (binary_expression "pbVar24 + 0x28" identifier + number_literal)) ;) (if_statement "if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;" if (parenthesized_expression "(*(byte **)(puVar34 + -0x104) == pbVar23)" ( (binary_expression "*(byte **)(puVar34 + -0x104) == pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x104)" * (cast_expression "(byte **)(puVar34 + -0x104)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_0002d988;" goto statement_identifier ;)) (goto_statement "goto LAB_0002d8f0;" goto statement_identifier ;) (labeled_statement "code_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);" statement_identifier : (expression_statement "pbVar28 = *(byte **)(puVar34 + -0x70);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0x70)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x70)" * (cast_expression "(byte **)(puVar34 + -0x70)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) ))))) ;)) (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" identifier = (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;" statement_identifier : (expression_statement "pbVar23 = pbVar23 + (int)pbVar28;" (assignment_expression "pbVar23 = pbVar23 + (int)pbVar28" identifier = (binary_expression "pbVar23 + (int)pbVar28" identifier + (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "unaff_s2 = unaff_s2 + 1;" (assignment_expression "unaff_s2 = unaff_s2 + 1" identifier = (binary_expression "unaff_s2 + 1" identifier + number_literal)) ;) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar34 + -0x74) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0x74) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x74)" * (cast_expression "(byte **)(puVar34 + -0x74)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x74)" ( (binary_expression "puVar34 + -0x74" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }" if (parenthesized_expression "(*(int *)(puVar34 + -0x104) == unaff_s2)" ( (binary_expression "*(int *)(puVar34 + -0x104) == unaff_s2" (pointer_expression "*(int *)(puVar34 + -0x104)" * (cast_expression "(int *)(puVar34 + -0x104)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x104)" ( (binary_expression "puVar34 + -0x104" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }" { (expression_statement "**(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);" (assignment_expression "**(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac)" (pointer_expression "**(undefined4 **)(puVar34 + -0x110)" * (pointer_expression "*(undefined4 **)(puVar34 + -0x110)" * (cast_expression "(undefined4 **)(puVar34 + -0x110)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0x110)" ( (binary_expression "puVar34 + -0x110" identifier + number_literal) ))))) = (pointer_expression "*(undefined4 *)(puVar34 + -0xac)" * (cast_expression "(undefined4 *)(puVar34 + -0xac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);" statement_identifier : (expression_statement "(**(code **)(iVar15 + -0x7ca0))(param_1);" (call_expression "(**(code **)(iVar15 + -0x7ca0))(param_1)" (parenthesized_expression "(**(code **)(iVar15 + -0x7ca0))" ( (pointer_expression "**(code **)(iVar15 + -0x7ca0)" * (pointer_expression "*(code **)(iVar15 + -0x7ca0)" * (cast_expression "(code **)(iVar15 + -0x7ca0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7ca0)" ( (binary_expression "iVar15 + -0x7ca0" identifier + number_literal) ))))) )) (argument_list "(param_1)" ( identifier ))) ;)) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" identifier = (pointer_expression "*(int *)(puVar34 + -0x118)" * (cast_expression "(int *)(puVar34 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x118)" ( (binary_expression "puVar34 + -0x118" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002db5c;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002daa0;" goto statement_identifier ;) (labeled_statement "LAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);" statement_identifier : (expression_statement "pcVar30 = *(char **)(puVar34 + -0xac);" (assignment_expression "pcVar30 = *(char **)(puVar34 + -0xac)" identifier = (pointer_expression "*(char **)(puVar34 + -0xac)" * (cast_expression "(char **)(puVar34 + -0xac)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002dd68:\n  puVar34[-0xb0] = 0;" statement_identifier : (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));" (assignment_expression "pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8))" identifier = (cast_expression "(byte *)(pcVar30 + *(int *)(puVar34 + -0xa8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar30 + *(int *)(puVar34 + -0xa8))" ( (binary_expression "pcVar30 + *(int *)(puVar34 + -0xa8)" identifier + (pointer_expression "*(int *)(puVar34 + -0xa8)" * (cast_expression "(int *)(puVar34 + -0xa8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0xa8)" ( (binary_expression "puVar34 + -0xa8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xac)" * (cast_expression "(byte **)(puVar34 + -0xac)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar34 + -0xac)" ( (binary_expression "puVar34 + -0xac" identifier + number_literal) )))) = identifier) ;) (labeled_statement "joined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;" statement_identifier : (expression_statement "pbVar23 = pbVar23 + -1;" (assignment_expression "pbVar23 = pbVar23 + -1" identifier = (binary_expression "pbVar23 + -1" identifier + number_literal)) ;)) (if_statement "if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }" if (parenthesized_expression "(pbVar23 == (byte *)0x0)" ( (binary_expression "pbVar23 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }" { (expression_statement "cVar14 = puVar34[-0x78];" (assignment_expression "cVar14 = puVar34[-0x78]" identifier = (subscript_expression "puVar34[-0x78]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2 = *(int *)(puVar34 + -0x108);" (assignment_expression "unaff_s2 = *(int *)(puVar34 + -0x108)" identifier = (pointer_expression "*(int *)(puVar34 + -0x108)" * (cast_expression "(int *)(puVar34 + -0x108)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x108)" ( (binary_expression "puVar34 + -0x108" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0002d9dc;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002dd80;" goto statement_identifier ;) (labeled_statement "code_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" statement_identifier : (expression_statement "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;)) (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x114" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , identifier , number_literal , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_0002df14:\n  puVar34[-0x6c] = 0;" statement_identifier : (expression_statement "puVar34[-0x6c] = 0;" (assignment_expression "puVar34[-0x6c] = 0" (subscript_expression "puVar34[-0x6c]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" * (cast_expression "(undefined4 *)(puVar34 + -0x70)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar34 + -0x70)" ( (binary_expression "puVar34 + -0x70" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002d9f0;" goto statement_identifier ;) (labeled_statement "LAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar35 + -0xc4)" * (cast_expression "(int *)(puVar35 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc0)" * (cast_expression "(byte **)(puVar35 + -0xc0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;" statement_identifier : (expression_statement "pbVar29 = unaff_s5 + iVar9;" (assignment_expression "pbVar29 = unaff_s5 + iVar9" identifier = (binary_expression "unaff_s5 + iVar9" identifier + identifier)) ;)) (expression_statement "puVar35[-200] = 0;" (assignment_expression "puVar35[-200] = 0" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xc4) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xc4) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xc4)" * (cast_expression "(byte **)(puVar35 + -0xc4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;" (assignment_expression "*(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar35 + -0x160) + 1" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) + number_literal)) ;) (if_statement "if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;" if (parenthesized_expression "(puVar35[-0xd4] == '\0')" ( (binary_expression "puVar35[-0xd4] == '\0'" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e3c4;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e6f4;" goto statement_identifier ;) (labeled_statement "LAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);" statement_identifier : (expression_statement "pbVar31 = *(byte **)(puVar35 + -0x148);" (assignment_expression "pbVar31 = *(byte **)(puVar35 + -0x148)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x148)" * (cast_expression "(byte **)(puVar35 + -0x148)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x148)" ( (binary_expression "puVar35 + -0x148" identifier + number_literal) ))))) ;)) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) (labeled_statement "LAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;" statement_identifier : (expression_statement "pbVar6 = (byte *)0xffffffff;" (assignment_expression "pbVar6 = (byte *)0xffffffff" identifier = (cast_expression "(byte *)0xffffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_0002f060;" goto statement_identifier ;) (labeled_statement "LAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);" statement_identifier : (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xe8" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_0002e0bc:\n  pbVar24 = &DAT_00000096;" statement_identifier : (expression_statement "pbVar24 = &DAT_00000096;" (assignment_expression "pbVar24 = &DAT_00000096" identifier = (pointer_expression "&DAT_00000096" & identifier)) ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7bb0);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7bb0)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) ;) (expression_statement "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);" (assignment_expression "pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x100)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_0002e0e0:\n  pcVar42 = mbsstr;" statement_identifier : (expression_statement "pcVar42 = mbsstr;" (assignment_expression "pcVar42 = mbsstr" identifier = identifier) ;)) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x47b00)" identifier = (pointer_expression "*(undefined4 **)(pcVar33 + 0x47b00)" * (cast_expression "(undefined4 **)(pcVar33 + 0x47b00)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x47b00)" ( (binary_expression "pcVar33 + 0x47b00" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x47a80);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x47a80)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x47a80)" * (cast_expression "(code **)(pcVar33 + 0x47a80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x47a80)" ( (binary_expression "pcVar33 + 0x47a80" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar35 + -0x154) = puVar8;" (assignment_expression "*(undefined4 **)(puVar35 + -0x154) = puVar8" (pointer_expression "*(undefined4 **)(puVar35 + -0x154)" * (cast_expression "(undefined4 **)(puVar35 + -0x154)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x154)" ( (binary_expression "puVar35 + -0x154" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;" (assignment_expression "*(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498" (pointer_expression "*(code **)(puVar35 + -0x170)" * (cast_expression "(code **)(puVar35 + -0x170)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4f498" identifier + number_literal)) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x1c) = unaff_s3;" (assignment_expression "*(undefined1 **)(puVar35 + -0x1c) = unaff_s3" (pointer_expression "*(undefined1 **)(puVar35 + -0x1c)" * (cast_expression "(undefined1 **)(puVar35 + -0x1c)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1c)" ( (binary_expression "puVar35 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar35 + -0x20) = unaff_s2;" (assignment_expression "*(int *)(puVar35 + -0x20) = unaff_s2" (pointer_expression "*(int *)(puVar35 + -0x20)" * (cast_expression "(int *)(puVar35 + -0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x20)" ( (binary_expression "puVar35 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -4) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -4) = pcVar42" (pointer_expression "*(code **)(puVar35 + -4)" * (cast_expression "(code **)(puVar35 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -4)" ( (binary_expression "puVar35 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;" (assignment_expression "*(undefined1 **)(puVar35 + -8) = puVar34 + -0x128" (pointer_expression "*(undefined1 **)(puVar35 + -8)" * (cast_expression "(undefined1 **)(puVar35 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -8)" ( (binary_expression "puVar35 + -8" identifier + number_literal) )))) = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar35 + -0xc) = pbVar23;" (assignment_expression "*(byte **)(puVar35 + -0xc) = pbVar23" (pointer_expression "*(byte **)(puVar35 + -0xc)" * (cast_expression "(byte **)(puVar35 + -0xc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc)" ( (binary_expression "puVar35 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar35 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar35 + -0x10)" * (cast_expression "(byte **)(puVar35 + -0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x10)" ( (binary_expression "puVar35 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x14) = unaff_s5;" (assignment_expression "*(byte **)(puVar35 + -0x14) = unaff_s5" (pointer_expression "*(byte **)(puVar35 + -0x14)" * (cast_expression "(byte **)(puVar35 + -0x14)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14)" ( (binary_expression "puVar35 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x18) = unaff_s4;" (assignment_expression "*(byte **)(puVar35 + -0x18) = unaff_s4" (pointer_expression "*(byte **)(puVar35 + -0x18)" * (cast_expression "(byte **)(puVar35 + -0x18)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x18)" ( (binary_expression "puVar35 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x24) = pbVar28;" (assignment_expression "*(byte **)(puVar35 + -0x24) = pbVar28" (pointer_expression "*(byte **)(puVar35 + -0x24)" * (cast_expression "(byte **)(puVar35 + -0x24)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x24)" ( (binary_expression "puVar35 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x28) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x28) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x28)" * (cast_expression "(byte **)(puVar35 + -0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x28)" ( (binary_expression "puVar35 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x2c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar35 + -0x2c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar35 + -0x2c)" * (cast_expression "(undefined4 *)(puVar35 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x2c)" ( (binary_expression "puVar35 + -0x2c" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "uVar5 = (*pcVar40)();" (assignment_expression "uVar5 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar31 = pbVar10;" (assignment_expression "pbVar31 = pbVar10" identifier = identifier) ;) (if_statement "if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" if (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 2" identifier < number_literal) )) (compound_statement "{\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }" { (expression_statement "unaff_s6 = (byte *)(int)(char)*pbVar6;" (assignment_expression "unaff_s6 = (byte *)(int)(char)*pbVar6" identifier = (cast_expression "(byte *)(int)(char)*pbVar6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar6" * identifier))))) ;) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" identifier = identifier) ;) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }" if (parenthesized_expression "(unaff_s6 != (byte *)0x0)" ( (binary_expression "unaff_s6 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }" { (expression_statement "pbVar29 = pbVar6 + 1;" (assignment_expression "pbVar29 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }" if (parenthesized_expression "(*pbVar10 != 0)" ( (binary_expression "*pbVar10 != 0" (pointer_expression "*pbVar10" * identifier) != number_literal) )) (compound_statement "{\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }" { (expression_statement "pbVar23 = (byte *)0x0;" (assignment_expression "pbVar23 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s5 = (byte *)0x0;" (assignment_expression "unaff_s5 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "puVar37 = puVar35 + -0x148;" (assignment_expression "puVar37 = puVar35 + -0x148" identifier = (binary_expression "puVar35 + -0x148" identifier + number_literal)) ;) (expression_statement "param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);" (assignment_expression "param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -32000) + -0x2b80)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2b80)" ( (binary_expression "*(int *)(iVar15 + -32000) + -0x2b80" (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar28 = pbVar6;" (assignment_expression "pbVar28 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar26 = pbVar10;" (assignment_expression "pbVar26 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar4 = (byte *)0x0;" (assignment_expression "pbVar4 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);" statement_identifier : (do_statement "do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);" do (compound_statement "{\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        }" { (expression_statement "unaff_s4 = pbVar4;" (assignment_expression "unaff_s4 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar31 = pbVar26;" (assignment_expression "pbVar31 = pbVar26" identifier = identifier) ;) (expression_statement "pbVar10 = pbVar31;" (assignment_expression "pbVar10 = pbVar31" identifier = identifier) ;) (if_statement "if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }" if (parenthesized_expression "(((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4))" ( (binary_expression "((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)" (parenthesized_expression "((iVar9 != 0) && (&DAT_00000009 < unaff_s5))" ( (binary_expression "(iVar9 != 0) && (&DAT_00000009 < unaff_s5)" (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) && (parenthesized_expression "(&DAT_00000009 < unaff_s5)" ( (binary_expression "&DAT_00000009 < unaff_s5" (pointer_expression "&DAT_00000009" & identifier) < identifier) ))) )) && (parenthesized_expression "((byte *)((int)unaff_s5 * 5) <= unaff_s4)" ( (binary_expression "(byte *)((int)unaff_s5 * 5) <= unaff_s4" (cast_expression "(byte *)((int)unaff_s5 * 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5 * 5)" ( (binary_expression "(int)unaff_s5 * 5" (cast_expression "(int)unaff_s5" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))) <= identifier) ))) )) (compound_statement "{\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }" { (expression_statement "*(int *)(puVar35 + -0x168) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x168) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) = identifier) ;) (if_statement "if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }" if (parenthesized_expression "(pbVar28 != (byte *)0x0)" ( (binary_expression "pbVar28 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }" { (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7af4);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7af4)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7af4)" * (cast_expression "(code **)(iVar15 + -0x7af4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7af4)" ( (binary_expression "iVar15 + -0x7af4" identifier + number_literal) ))))) ;) (expression_statement "pbVar43 = unaff_s4 + -(int)pbVar23;" (assignment_expression "pbVar43 = unaff_s4 + -(int)pbVar23" identifier = (binary_expression "unaff_s4 + -(int)pbVar23" identifier + (unary_expression "-(int)pbVar23" - (cast_expression "(int)pbVar23" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "*(byte **)(puVar35 + -0x164) = pbVar28;" (assignment_expression "*(byte **)(puVar35 + -0x164) = pbVar28" (pointer_expression "*(byte **)(puVar35 + -0x164)" * (cast_expression "(byte **)(puVar35 + -0x164)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar9 = (*pcVar33)(pbVar28);" (assignment_expression "iVar9 = (*pcVar33)(pbVar28)" identifier = (call_expression "(*pcVar33)(pbVar28)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(pbVar28)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9)" identifier = (cast_expression "(byte *)(*(int *)(puVar35 + -0x164) + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x164) + iVar9)" ( (binary_expression "*(int *)(puVar35 + -0x164) + iVar9" (pointer_expression "*(int *)(puVar35 + -0x164)" * (cast_expression "(int *)(puVar35 + -0x164)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar9 = *(int *)(puVar35 + -0x168);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0x168)" identifier = (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = unaff_s4;" (assignment_expression "pbVar23 = unaff_s4" identifier = identifier) ;) (if_statement "if (*pbVar28 != 0) goto LAB_0002e218;" if (parenthesized_expression "(*pbVar28 != 0)" ( (binary_expression "*pbVar28 != 0" (pointer_expression "*pbVar28" * identifier) != number_literal) )) (goto_statement "goto LAB_0002e218;" goto statement_identifier ;)) })) (expression_statement "pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);" (assignment_expression "pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6)" identifier = (cast_expression "(byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar15 + -0x7a8c))(pbVar6)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pbVar6)" ( identifier ))))) ;) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);" (assignment_expression "iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37)" identifier = (call_expression "FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37)" identifier (argument_list "(pbVar31,pbVar6,pbVar24,puVar37)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) goto LAB_0002ef34;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002ef34;" goto statement_identifier ;)) (expression_statement "pbVar28 = (byte *)0x0;" (assignment_expression "pbVar28 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) })) (labeled_statement "LAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;" statement_identifier : (expression_statement "unaff_s5 = unaff_s5 + 1;" (assignment_expression "unaff_s5 = unaff_s5 + 1" identifier = (binary_expression "unaff_s5 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar26 = pbVar31 + 1;" (assignment_expression "pbVar26 = pbVar31 + 1" identifier = (binary_expression "pbVar31 + 1" identifier + number_literal)) ;) (if_statement "if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }" if (parenthesized_expression "((byte *)(int)(char)*pbVar31 == unaff_s6)" ( (binary_expression "(byte *)(int)(char)*pbVar31 == unaff_s6" (cast_expression "(byte *)(int)(char)*pbVar31" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar31" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar31" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar31" * identifier)))) == identifier) )) (compound_statement "{\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }" { (if_statement "if (pbVar6[1] == 0) goto LAB_0002e2ac;" if (parenthesized_expression "(pbVar6[1] == 0)" ( (binary_expression "pbVar6[1] == 0" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (if_statement "if (*pbVar26 == 0) break;" if (parenthesized_expression "(*pbVar26 == 0)" ( (binary_expression "*pbVar26 == 0" (pointer_expression "*pbVar26" * identifier) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar4 = unaff_s4 + 2;" (assignment_expression "pbVar4 = unaff_s4 + 2" identifier = (binary_expression "unaff_s4 + 2" identifier + number_literal)) ;) (if_statement "if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }" if (parenthesized_expression "(pbVar6[1] == *pbVar26)" ( (binary_expression "pbVar6[1] == *pbVar26" (subscript_expression "pbVar6[1]" identifier [ number_literal ]) == (pointer_expression "*pbVar26" * identifier)) )) (compound_statement "{\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }" { (expression_statement "pbVar17 = pbVar6 + 2;" (assignment_expression "pbVar17 = pbVar6 + 2" identifier = (binary_expression "pbVar6 + 2" identifier + number_literal)) ;) (expression_statement "pbVar21 = pbVar26;" (assignment_expression "pbVar21 = pbVar26" identifier = identifier) ;) (do_statement "do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);" do (compound_statement "{\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              }" { (expression_statement "pbVar43 = (byte *)(int)(char)*pbVar17;" (assignment_expression "pbVar43 = (byte *)(int)(char)*pbVar17" identifier = (cast_expression "(byte *)(int)(char)*pbVar17" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar17" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar17" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar17" * identifier))))) ;) (expression_statement "pbVar21 = pbVar21 + 1;" (assignment_expression "pbVar21 = pbVar21 + 1" identifier = (binary_expression "pbVar21 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;" if (parenthesized_expression "(pbVar43 == (byte *)0x0)" ( (binary_expression "pbVar43 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (expression_statement "pbVar24 = (byte *)(int)(char)*pbVar21;" (assignment_expression "pbVar24 = (byte *)(int)(char)*pbVar21" identifier = (cast_expression "(byte *)(int)(char)*pbVar21" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar21" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar21" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar21" * identifier))))) ;) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) (if_statement "if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;" if (parenthesized_expression "(pbVar24 == (byte *)0x0)" ( (binary_expression "pbVar24 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ec;" goto statement_identifier ;)) (expression_statement "pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);" (assignment_expression "pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6)" identifier = (binary_expression "unaff_s4 + ((int)pbVar17 - (int)pbVar6)" identifier + (parenthesized_expression "((int)pbVar17 - (int)pbVar6)" ( (binary_expression "(int)pbVar17 - (int)pbVar6" (cast_expression "(int)pbVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) }) while (parenthesized_expression "(pbVar43 == pbVar24)" ( (binary_expression "pbVar43 == pbVar24" identifier == identifier) )) ;) })) (goto_statement "goto LAB_0002e18c;" goto statement_identifier ;) })) (expression_statement "pbVar4 = unaff_s4 + 1;" (assignment_expression "pbVar4 = unaff_s4 + 1" identifier = (binary_expression "unaff_s4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar31[1] != 0)" ( (binary_expression "pbVar31[1] != 0" (subscript_expression "pbVar31[1]" identifier [ number_literal ]) != number_literal) )) ;)) })) (labeled_statement "LAB_0002e2ec:\n      pbVar31 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) })) (labeled_statement "LAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);" statement_identifier : (expression_statement "pbVar28 = *(byte **)(puVar35 + -0x2c);" (assignment_expression "pbVar28 = *(byte **)(puVar35 + -0x2c)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x2c)" * (cast_expression "(byte **)(puVar35 + -0x2c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x2c)" ( (binary_expression "puVar35 + -0x2c" identifier + number_literal) ))))) ;)) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }" if (parenthesized_expression "(pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154))" ( (binary_expression "pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)" identifier == (cast_expression "(byte *)**(undefined4 **)(puVar35 + -0x154)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(undefined4 **)(puVar35 + -0x154)" * (pointer_expression "*(undefined4 **)(puVar35 + -0x154)" * (cast_expression "(undefined4 **)(puVar35 + -0x154)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x154)" ( (binary_expression "puVar35 + -0x154" identifier + number_literal) ))))))) )) (compound_statement "{\n      return pbVar31;\n    }" { (return_statement "return pbVar31;" return identifier ;) })) }) (else_clause "else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" else (compound_statement "{\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" { (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (expression_statement "pbVar29 = (byte *)(int)(char)bVar20;" (assignment_expression "pbVar29 = (byte *)(int)(char)bVar20" identifier = (cast_expression "(byte *)(int)(char)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)bVar20" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar20" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (expression_statement "param_1 = puVar35 + -0x140;" (assignment_expression "param_1 = puVar35 + -0x140" identifier = (binary_expression "puVar35 + -0x140" identifier + number_literal)) ;) (expression_statement "iVar9 = *(int *)(iVar15 + -0x7c98);" (assignment_expression "iVar9 = *(int *)(iVar15 + -0x7c98)" identifier = (pointer_expression "*(int *)(iVar15 + -0x7c98)" * (cast_expression "(int *)(iVar15 + -0x7c98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7c98)" ( (binary_expression "iVar15 + -0x7c98" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x140) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x140) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x140)" * (cast_expression "(undefined4 *)(puVar35 + -0x140)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x140)" ( (binary_expression "puVar35 + -0x140" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar43 = (byte *)(uint)bVar20;" (assignment_expression "pbVar43 = (byte *)(uint)bVar20" identifier = (cast_expression "(byte *)(uint)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x13c)" * (cast_expression "(undefined4 *)(puVar35 + -0x13c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x13c)" ( (binary_expression "puVar35 + -0x13c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x168) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x168) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x134) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x134) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x134)" * (cast_expression "(byte **)(puVar35 + -0x134)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x144] = 0;" (assignment_expression "puVar35[-0x144] = 0" (subscript_expression "puVar35[-0x144]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" identifier = (pointer_expression "*(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "iVar9 + (uint)(bVar20 >> 5) * 4" identifier + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "puVar35[-0x138] = 0;" (assignment_expression "puVar35[-0x138] = 0" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }" if (parenthesized_expression "((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0)" ( (binary_expression "(uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar5 >> ((uint)pbVar43 & 0x1f) & 1)" ( (binary_expression "uVar5 >> ((uint)pbVar43 & 0x1f) & 1" (binary_expression "uVar5 >> ((uint)pbVar43 & 0x1f)" identifier >> (parenthesized_expression "((uint)pbVar43 & 0x1f)" ( (binary_expression "(uint)pbVar43 & 0x1f" (cast_expression "(uint)pbVar43" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }" { (expression_statement "*(byte **)(puVar35 + -0x128) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x128) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x128)" * (cast_expression "(byte **)(puVar35 + -0x128)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-300] = 1;" (assignment_expression "puVar35[-300] = 1" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" statement_identifier : (if_statement "if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" { (labeled_statement "LAB_0002e360:\n        puVar35[-0xd4] = 0;" statement_identifier : (expression_statement "puVar35[-0xd4] = 0;" (assignment_expression "puVar35[-0xd4] = 0" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) = number_literal) ;)) (expression_statement "unaff_s4 = puVar35 + -0x108;" (assignment_expression "unaff_s4 = puVar35 + -0x108" identifier = (binary_expression "puVar35 + -0x108" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x108) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x108) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x108)" * (cast_expression "(undefined4 *)(puVar35 + -0x108)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x108)" ( (binary_expression "puVar35 + -0x108" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" * (cast_expression "(undefined4 *)(puVar35 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar37 = puVar35 + -0xd0;" (assignment_expression "puVar37 = puVar35 + -0xd0" identifier = (binary_expression "puVar35 + -0xd0" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xd0) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0xd0) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0xd0)" * (cast_expression "(undefined4 *)(puVar35 + -0xd0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xd0)" ( (binary_expression "puVar35 + -0xd0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;" (assignment_expression "*(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4" (pointer_expression "*(undefined1 **)(puVar35 + -0x158)" * (cast_expression "(undefined1 **)(puVar35 + -0x158)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x158)" ( (binary_expression "puVar35 + -0x158" identifier + number_literal) )))) = (binary_expression "puVar35 + -0xa4" identifier + number_literal)) ;) (expression_statement "param_1 = (byte *)0x0;" (assignment_expression "param_1 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar9 = *(int *)(iVar15 + -32000);" (assignment_expression "iVar9 = *(int *)(iVar15 + -32000)" identifier = (pointer_expression "*(int *)(iVar15 + -32000)" * (cast_expression "(int *)(iVar15 + -32000)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -32000)" ( (binary_expression "iVar15 + -32000" identifier + number_literal) ))))) ;) (expression_statement "pbVar23 = puVar35 + -0x80;" (assignment_expression "pbVar23 = puVar35 + -0x80" identifier = (binary_expression "puVar35 + -0x80" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x104) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x104) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x104)" * (cast_expression "(undefined4 *)(puVar35 + -0x104)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x104)" ( (binary_expression "puVar35 + -0x104" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xcc) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0xcc) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0xcc)" * (cast_expression "(undefined4 *)(puVar35 + -0xcc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xcc)" ( (binary_expression "puVar35 + -0xcc" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xfc) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0xfc) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x160) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x160) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x160)" * (cast_expression "(undefined4 *)(puVar35 + -0x160)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;" (assignment_expression "*(int *)(puVar35 + -0x14c) = iVar9 + -0x2954" (pointer_expression "*(int *)(puVar35 + -0x14c)" * (cast_expression "(int *)(puVar35 + -0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x14c)" ( (binary_expression "puVar35 + -0x14c" identifier + number_literal) )))) = (binary_expression "iVar9 + -0x2954" identifier + number_literal)) ;) (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x150) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x150) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x150)" * (cast_expression "(undefined4 *)(puVar35 + -0x150)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x100] = 0;" (assignment_expression "puVar35[-0x100] = 0" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xc4) = pbVar10;" (assignment_expression "*(byte **)(puVar35 + -0xc4) = pbVar10" (pointer_expression "*(byte **)(puVar35 + -0xc4)" * (cast_expression "(byte **)(puVar35 + -0xc4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-200] = 0;" (assignment_expression "puVar35[-200] = 0" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar29 = pbVar10;" (assignment_expression "pbVar29 = pbVar10" identifier = identifier) ;) (if_statement "if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;" if (parenthesized_expression "(puVar35[-0xd4] != '\0')" ( (binary_expression "puVar35[-0xd4] != '\0'" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e6f4;" goto statement_identifier ;)) (labeled_statement "LAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" statement_identifier : (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar29 >> 5)" ( (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar29 & 0x1f)" ( (binary_expression "*pbVar29 & 0x1f" (pointer_expression "*pbVar29" * identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" { (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" identifier = (cast_expression "(byte *)(int)(char)*pbVar29" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar29" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar29" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar29" * identifier))))) ;) (expression_statement "puVar35[-0xbc] = 1;" (assignment_expression "puVar35[-0xbc] = 1" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xb8) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xb8) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xb8)" * (cast_expression "(byte **)(puVar35 + -0xb8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0002e404;" goto statement_identifier ;) }))) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(puVar37)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(puVar37)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }" { (expression_statement "puVar35[-0xd4] = 1;" (assignment_expression "puVar35[-0xd4] = 1" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar29,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar29,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar29,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar29,uVar41)" identifier (argument_list "(pbVar29,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" identifier (argument_list "(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0xc0) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xc0) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xc0)" * (cast_expression "(int *)(puVar35 + -0xc0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }" { (expression_statement "puVar35[-0xbc] = 0;" (assignment_expression "puVar35[-0xbc] = 0" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" else (compound_statement "{\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" { (if_statement "if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }" { (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }" { (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xb8);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xb8)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xb8)" * (cast_expression "(byte **)(puVar35 + -0xb8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0xc4) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0xc4) != '\0'" (pointer_expression "**(char **)(puVar35 + -0xc4)" * (pointer_expression "*(char **)(puVar35 + -0xc4)" * (cast_expression "(char **)(puVar35 + -0xc4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }" { (labeled_statement "LAB_0002ed10:\n                  FUN_0002d670();" statement_identifier : (expression_statement "FUN_0002d670();" (call_expression "FUN_0002d670()" identifier (argument_list "()" ( ))) ;)) (labeled_statement "LAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);" statement_identifier : (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" identifier = (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;)) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" identifier = identifier) ;) (labeled_statement "LAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;" statement_identifier : (expression_statement "unaff_s5 = puVar35 + -0x48;" (assignment_expression "unaff_s5 = puVar35 + -0x48" identifier = (binary_expression "puVar35 + -0x48" identifier + number_literal)) ;)) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "unaff_s6 = puVar35 + -0x98;" (assignment_expression "unaff_s6 = puVar35 + -0x98" identifier = (binary_expression "puVar35 + -0x98" identifier + number_literal)) ;) (expression_statement "pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));" (assignment_expression "pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50))" identifier = (cast_expression "(byte *)(pcVar30 + *(int *)(puVar35 + -0x50))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar30 + *(int *)(puVar35 + -0x50))" ( (binary_expression "pcVar30 + *(int *)(puVar35 + -0x50)" identifier + (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar43;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar43" (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) = identifier) ;) (do_statement "do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );" do (compound_statement "{\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" if (parenthesized_expression "(puVar35[-100] == '\0')" ( (binary_expression "puVar35[-100] == '\0'" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }" { (expression_statement "bVar20 = *pbVar43;" (assignment_expression "bVar20 = *pbVar43" identifier = (pointer_expression "*pbVar43" * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }" { (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164))" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = pbVar43;" (assignment_expression "pbVar29 = pbVar43" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }" { (expression_statement "puVar35[-100] = 1;" (assignment_expression "puVar35[-100] = 1" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e630;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar43;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar43" identifier = (cast_expression "(byte *)(int)(char)*pbVar43" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar43" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar43" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar43" * identifier))))) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0x48) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x48) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar43 = (byte *)(uint)bVar20;" (assignment_expression "pbVar43 = (byte *)(uint)bVar20" identifier = (cast_expression "(byte *)(uint)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)bVar20" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (labeled_statement "joined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" statement_identifier : (if_statement "if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" { (expression_statement "pbVar31 = *(byte **)(puVar35 + -0xc4);" (assignment_expression "pbVar31 = *(byte **)(puVar35 + -0xc4)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc4)" * (cast_expression "(byte **)(puVar35 + -0xc4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) }))) }) (else_clause "else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" else (compound_statement "{\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" { (labeled_statement "LAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar43,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar43,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar43,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar43,uVar41)" identifier (argument_list "(pbVar43,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" identifier = (call_expression "rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" identifier (argument_list "(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" ( identifier , identifier , identifier , (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x50) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x50) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }" { (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" else (compound_statement "{\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" { (if_statement "if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }" { (if_statement "if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }" { (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0x54) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0x54) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x54)" * (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" else (compound_statement "{\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" identifier = (call_expression "(*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                            puVar35[-100] = 0;\n                          }" { (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto joined_r0x0002e574;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x54))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x54)" * (cast_expression "(undefined4 *)(puVar35 + -0x54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }))) }))) (if_statement "if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" if (parenthesized_expression "(puVar35[-0x90] == '\0')" ( (binary_expression "puVar35[-0x90] == '\0'" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x8c);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x8c)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x8c)" * (cast_expression "(byte **)(puVar35 + -0x8c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }" if (parenthesized_expression "(puVar35[-0x9c] == '\0')" ( (binary_expression "puVar35[-0x9c] == '\0'" (subscript_expression "puVar35[-0x9c]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }" { (expression_statement "pbVar43 = (byte *)(uint)*pbVar29;" (assignment_expression "pbVar43 = (byte *)(uint)*pbVar29" identifier = (binary_expression "(byte *)(uint)*pbVar29" (cast_expression "(byte *)(uint)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uint)" ( identifier ))) * identifier)) ;) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar29 >> 5)" ( (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "((uint)pbVar43 & 0x1f)" ( (binary_expression "(uint)pbVar43 & 0x1f" (cast_expression "(uint)pbVar43" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) != number_literal) )) (compound_statement "{\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }" { (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" identifier = (cast_expression "(byte *)(int)(char)*pbVar29" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar29" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar29" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar29" * identifier))))) ;) (expression_statement "puVar35[-0x84] = 1;" (assignment_expression "puVar35[-0x84] = 1" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0x80) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x80) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) )))) = identifier) ;) (goto_statement "goto LAB_0002e5d0;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s6)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) goto LAB_0002ef3c;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;)) (expression_statement "puVar35[-0x9c] = 1;" (assignment_expression "puVar35[-0x9c] = 1" (subscript_expression "puVar35[-0x9c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar29,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar29,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar29,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar29,uVar41)" identifier (argument_list "(pbVar29,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);" (assignment_expression "iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6)" identifier = (call_expression "rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6)" identifier (argument_list "(pbVar23,pbVar29,pbVar24,unaff_s6)" ( identifier , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x88) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x88) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x88)" * (cast_expression "(int *)(puVar35 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }" { (expression_statement "puVar35[-0x84] = 0;" (assignment_expression "puVar35[-0x84] = 0" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" else (compound_statement "{\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" { (if_statement "if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }" { (if_statement "if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }" { (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0x8c) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0x8c) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x8c)" * (pointer_expression "*(char **)(puVar35 + -0x8c)" * (cast_expression "(char **)(puVar35 + -0x8c)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" else (compound_statement "{\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0x84] = 1;" (assignment_expression "puVar35[-0x84] = 1" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s6)" identifier = (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s6)" ( identifier )))) ;) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                            puVar35[-0x9c] = 0;\n                          }" { (expression_statement "puVar35[-0x9c] = 0;" (assignment_expression "puVar35[-0x9c] = 0" (subscript_expression "puVar35[-0x9c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e5d0;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x8c))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x8c)" * (cast_expression "(undefined4 *)(puVar35 + -0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x88) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" * (cast_expression "(undefined4 *)(puVar35 + -0x88)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x84] = 0;" (assignment_expression "puVar35[-0x84] = 0" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x88)" * (cast_expression "(byte **)(puVar35 + -0x88)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) ))))) ;) (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" identifier = identifier) ;) (labeled_statement "LAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar35 + -0xc4)" * (cast_expression "(int *)(puVar35 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;" if (parenthesized_expression "(pbVar24 != *(byte **)(puVar35 + -0x50))" ( (binary_expression "pbVar24 != *(byte **)(puVar35 + -0x50)" identifier != (pointer_expression "*(byte **)(puVar35 + -0x50)" * (cast_expression "(byte **)(puVar35 + -0x50)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e6cc;" goto statement_identifier ;)) (expression_statement "pbVar43 = *(byte **)(puVar35 + -0x54);" (assignment_expression "pbVar43 = *(byte **)(puVar35 + -0x54)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c))" identifier = (call_expression "(**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c))" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" ( (pointer_expression "**(code **)(iVar15 + -0x79c0)" * (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x8c))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x8c)" * (cast_expression "(undefined4 *)(puVar35 + -0x8c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "bVar2 = iVar9 != 0;" (assignment_expression "bVar2 = iVar9 != 0" identifier = (binary_expression "iVar9 != 0" identifier != number_literal)) ;) }) (else_clause "else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" else (compound_statement "{\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" { (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x88)" * (cast_expression "(byte **)(puVar35 + -0x88)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0x84] == '\0') goto LAB_0002e794;" if (parenthesized_expression "(puVar35[-0x84] == '\0')" ( (binary_expression "puVar35[-0x84] == '\0'" (subscript_expression "puVar35[-0x84]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e794;" goto statement_identifier ;)) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x80)" * (cast_expression "(byte **)(puVar35 + -0x80)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x80)" ( (binary_expression "puVar35 + -0x80" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;)) (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x88)" * (cast_expression "(byte **)(puVar35 + -0x88)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0x4c] == '\0') goto LAB_0002e794;" if (parenthesized_expression "(puVar35[-0x4c] == '\0')" ( (binary_expression "puVar35[-0x4c] == '\0'" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e794;" goto statement_identifier ;)) (expression_statement "bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;" (assignment_expression "bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29" identifier = (binary_expression "*(byte **)(puVar35 + -0x48) != pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) )))) != identifier)) ;) }))) (if_statement "if (bVar2) goto LAB_0002e6c8;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_0002e6c8;" goto statement_identifier ;)) (expression_statement "puVar35[-0x90] = 0;" (assignment_expression "puVar35[-0x90] = 0" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);" (assignment_expression "*(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar35 + -0x88)" * (cast_expression "(int *)(puVar35 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))))) ;) (expression_statement "pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));" (assignment_expression "pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" identifier = (cast_expression "(byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" ( (binary_expression "*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50)" (pointer_expression "*(int *)(puVar35 + -0x54)" * (cast_expression "(int *)(puVar35 + -0x54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar43;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar43" (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) }) (else_clause "else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" else (compound_statement "{\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xb8);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xb8)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xb8)" * (cast_expression "(byte **)(puVar35 + -0xb8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0xbc] = 1;" (assignment_expression "puVar35[-0xbc] = 1" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(puVar37);" (assignment_expression "iVar9 = (*pcVar33)(puVar37)" identifier = (call_expression "(*pcVar33)(puVar37)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(puVar37)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                puVar35[-0xd4] = 0;\n              }" { (expression_statement "puVar35[-0xd4] = 0;" (assignment_expression "puVar35[-0xd4] = 0" (subscript_expression "puVar35[-0xd4]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002e404:\n              pbVar31 = (byte *)0x0;" statement_identifier : (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (if_statement "if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }" { (if_statement "if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }" if (parenthesized_expression "((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10))" ( (binary_expression "(*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)" (parenthesized_expression "(*(int *)(puVar35 + -0x15c) == 0)" ( (binary_expression "*(int *)(puVar35 + -0x15c) == 0" (pointer_expression "*(int *)(puVar35 + -0x15c)" * (cast_expression "(int *)(puVar35 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(uint *)(puVar35 + -0x160) < 10)" ( (binary_expression "*(uint *)(puVar35 + -0x160) < 10" (pointer_expression "*(uint *)(puVar35 + -0x160)" * (cast_expression "(uint *)(puVar35 + -0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002e448;" goto statement_identifier ;) })) (expression_statement "uVar5 = *(uint *)(puVar35 + -0x15c);" (assignment_expression "uVar5 = *(uint *)(puVar35 + -0x15c)" identifier = (pointer_expression "*(uint *)(puVar35 + -0x15c)" * (cast_expression "(uint *)(puVar35 + -0x15c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) ))))) ;) (if_statement "if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;" if (parenthesized_expression "((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1)" ( (binary_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1" (cast_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x160) * 5)" ( (binary_expression "*(int *)(puVar35 + -0x160) * 5" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) * number_literal) ))) <= identifier) )) (goto_statement "goto LAB_0002e9c8;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e438;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0xc4))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0xc4)" * (cast_expression "(undefined4 *)(puVar35 + -0xc4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" * (cast_expression "(undefined4 *)(puVar35 + -0xc0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0xbc] = 0;" (assignment_expression "puVar35[-0xbc] = 0" (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }" if (parenthesized_expression "((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10))" ( (binary_expression "(*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)" (parenthesized_expression "(*(int *)(puVar35 + -0x15c) == 0)" ( (binary_expression "*(int *)(puVar35 + -0x15c) == 0" (pointer_expression "*(int *)(puVar35 + -0x15c)" * (cast_expression "(int *)(puVar35 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*(uint *)(puVar35 + -0x160) < 10)" ( (binary_expression "*(uint *)(puVar35 + -0x160) < 10" (pointer_expression "*(uint *)(puVar35 + -0x160)" * (cast_expression "(uint *)(puVar35 + -0x160)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) < number_literal) ))) )) (compound_statement "{\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0002e898;" goto statement_identifier ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (if_statement "if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }" if (parenthesized_expression "((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1)" ( (binary_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1" (cast_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x160) * 5)" ( (binary_expression "*(int *)(puVar35 + -0x160) * 5" (pointer_expression "*(int *)(puVar35 + -0x160)" * (cast_expression "(int *)(puVar35 + -0x160)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x160)" ( (binary_expression "puVar35 + -0x160" identifier + number_literal) )))) * number_literal) ))) <= identifier) )) (compound_statement "{\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }" { (labeled_statement "LAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);" statement_identifier : (expression_statement "unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);" (assignment_expression "unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150)" identifier = (binary_expression "param_1 + -*(int *)(puVar35 + -0x150)" identifier + (unary_expression "-*(int *)(puVar35 + -0x150)" - (pointer_expression "*(int *)(puVar35 + -0x150)" * (cast_expression "(int *)(puVar35 + -0x150)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) ))))))) ;)) (if_statement "if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }" if (parenthesized_expression "(unaff_s5 == (byte *)0x0)" ( (binary_expression "unaff_s5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }" { (if_statement "if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;" if (parenthesized_expression "(puVar35[-0x100] == '\0')" ( (binary_expression "puVar35[-0x100] == '\0'" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ed2c;" goto statement_identifier ;)) (if_statement "if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;" if (parenthesized_expression "(puVar35[-0xf4] == '\0')" ( (binary_expression "puVar35[-0xf4] == '\0'" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ed84;" goto statement_identifier ;)) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002ed78;" goto statement_identifier ;) })) (if_statement "if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }" if (parenthesized_expression "(puVar35[-0x100] != '\0')" ( (binary_expression "puVar35[-0x100] != '\0'" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (if_statement "if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;" if (parenthesized_expression "(puVar35[-0xf4] != '\0')" ( (binary_expression "puVar35[-0xf4] != '\0'" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ea50;" goto statement_identifier ;)) (goto_statement "goto LAB_0002e9e8;" goto statement_identifier ;) })) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xfc);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002ea08;" goto statement_identifier ;) })) (labeled_statement "LAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;" statement_identifier : (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" * (cast_expression "(undefined4 *)(puVar35 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = number_literal) ;)) (do_statement "do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );" do (compound_statement "{\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          }" { (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (if_statement "if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }" { (labeled_statement "LAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc0)" * (cast_expression "(byte **)(puVar35 + -0xc0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" identifier = (pointer_expression "*(int *)(puVar35 + -0xc4)" * (cast_expression "(int *)(puVar35 + -0xc4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xc4)" ( (binary_expression "puVar35 + -0xc4" identifier + number_literal) ))))) ;)) (if_statement "if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;" if (parenthesized_expression "(unaff_s5 != *(byte **)(puVar35 + -0x130))" ( (binary_expression "unaff_s5 != *(byte **)(puVar35 + -0x130)" identifier != (pointer_expression "*(byte **)(puVar35 + -0x130)" * (cast_expression "(byte **)(puVar35 + -0x130)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e6d0;" goto statement_identifier ;)) (expression_statement "pbVar43 = *(byte **)(puVar35 + -0x134);" (assignment_expression "pbVar43 = *(byte **)(puVar35 + -0x134)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x134)" * (cast_expression "(byte **)(puVar35 + -0x134)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) ))))) ;) (expression_statement "pbVar24 = unaff_s5;" (assignment_expression "pbVar24 = unaff_s5" identifier = identifier) ;) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9)" identifier = (call_expression "(**(code **)(iVar15 + -0x79c0))(iVar9)" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" ( (pointer_expression "**(code **)(iVar15 + -0x79c0)" * (pointer_expression "*(code **)(iVar15 + -0x79c0)" * (cast_expression "(code **)(iVar15 + -0x79c0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79c0)" ( (binary_expression "iVar15 + -0x79c0" identifier + number_literal) ))))) )) (argument_list "(iVar9)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (iVar11 != 0) goto LAB_0002e6d0;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002e6d0;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" else (compound_statement "{\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" { (labeled_statement "LAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);" statement_identifier : (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xc0)" * (cast_expression "(byte **)(puVar35 + -0xc0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xc0)" ( (binary_expression "puVar35 + -0xc0" identifier + number_literal) ))))) ;)) (if_statement "if (puVar35[-300] == '\0') goto LAB_0002e89c;" if (parenthesized_expression "(puVar35[-300] == '\0')" ( (binary_expression "puVar35[-300] == '\0'" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002e89c;" goto statement_identifier ;)) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;" if (parenthesized_expression "(*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128))" ( (binary_expression "*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)" (pointer_expression "*(int *)(puVar35 + -0xb8)" * (cast_expression "(int *)(puVar35 + -0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xb8)" ( (binary_expression "puVar35 + -0xb8" identifier + number_literal) )))) != (pointer_expression "*(int *)(puVar35 + -0x128)" * (cast_expression "(int *)(puVar35 + -0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0002e6c8;" goto statement_identifier ;)) }))) (expression_statement "puVar8 = (undefined4 *)(puVar35 + -0xd4);" (assignment_expression "puVar8 = (undefined4 *)(puVar35 + -0xd4)" identifier = (cast_expression "(undefined4 *)(puVar35 + -0xd4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xd4)" ( (binary_expression "puVar35 + -0xd4" identifier + number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)(puVar35 + -0x9c);" (assignment_expression "puVar3 = (undefined4 *)(puVar35 + -0x9c)" identifier = (cast_expression "(undefined4 *)(puVar35 + -0x9c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x9c)" ( (binary_expression "puVar35 + -0x9c" identifier + number_literal) )))) ;) (do_statement "do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);" do (compound_statement "{\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            }" { (expression_statement "puVar18 = puVar3;" (assignment_expression "puVar18 = puVar3" identifier = identifier) ;) (expression_statement "puVar12 = puVar8 + 4;" (assignment_expression "puVar12 = puVar8 + 4" identifier = (binary_expression "puVar8 + 4" identifier + number_literal)) ;) (expression_statement "uVar41 = puVar8[3];" (assignment_expression "uVar41 = puVar8[3]" identifier = (subscript_expression "puVar8[3]" identifier [ number_literal ])) ;) (expression_statement "uVar25 = puVar8[1];" (assignment_expression "uVar25 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = puVar8[2];" (assignment_expression "uVar16 = puVar8[2]" identifier = (subscript_expression "puVar8[2]" identifier [ number_literal ])) ;) (expression_statement "*puVar18 = *puVar8;" (assignment_expression "*puVar18 = *puVar8" (pointer_expression "*puVar18" * identifier) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "puVar18[1] = uVar25;" (assignment_expression "puVar18[1] = uVar25" (subscript_expression "puVar18[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar18[2] = uVar16;" (assignment_expression "puVar18[2] = uVar16" (subscript_expression "puVar18[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar18[3] = uVar41;" (assignment_expression "puVar18[3] = uVar41" (subscript_expression "puVar18[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar22 = *(undefined4 **)(puVar35 + -0x158);" (assignment_expression "puVar22 = *(undefined4 **)(puVar35 + -0x158)" identifier = (pointer_expression "*(undefined4 **)(puVar35 + -0x158)" * (cast_expression "(undefined4 **)(puVar35 + -0x158)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x158)" ( (binary_expression "puVar35 + -0x158" identifier + number_literal) ))))) ;) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" identifier = identifier) ;) (expression_statement "puVar3 = puVar18 + 4;" (assignment_expression "puVar3 = puVar18 + 4" identifier = (binary_expression "puVar18 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 != puVar22)" ( (binary_expression "puVar12 != puVar22" identifier != identifier) )) ;) (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" identifier = (pointer_expression "*pbVar6" * identifier)) ;) (expression_statement "pbVar29 = (byte *)(int)(char)bVar20;" (assignment_expression "pbVar29 = (byte *)(int)(char)bVar20" identifier = (cast_expression "(byte *)(int)(char)bVar20" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)bVar20" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar20" ( (type_descriptor "char" primitive_type) ) identifier)))) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;" (assignment_expression "*(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60" (pointer_expression "*(undefined1 **)(puVar35 + -0x164)" * (cast_expression "(undefined1 **)(puVar35 + -0x164)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) = (binary_expression "puVar35 + -0x60" identifier + number_literal)) ;) (expression_statement "pbVar24 = (byte *)*puVar22;" (assignment_expression "pbVar24 = (byte *)*puVar22" identifier = (cast_expression "(byte *)*puVar22" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar22" * identifier))) ;) (expression_statement "puVar18[5] = puVar22[1];" (assignment_expression "puVar18[5] = puVar22[1]" (subscript_expression "puVar18[5]" identifier [ number_literal ]) = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "puVar18[4] = pbVar24;" (assignment_expression "puVar18[4] = pbVar24" (subscript_expression "puVar18[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar35[-0x90] = 0;" (assignment_expression "puVar35[-0x90] = 0" (subscript_expression "puVar35[-0x90]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x54)" * (cast_expression "(byte **)(puVar35 + -0x54)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar20 >> 5)" ( (binary_expression "bVar20 >> 5" identifier >> number_literal) ))) * number_literal)) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x60)" * (cast_expression "(undefined4 *)(puVar35 + -0x60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x60)" ( (binary_expression "puVar35 + -0x60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);" (assignment_expression "*(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) = (binary_expression "*(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" * (cast_expression "(int *)(puVar35 + -0x8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x8c)" ( (binary_expression "puVar35 + -0x8c" identifier + number_literal) )))) + (pointer_expression "*(int *)(puVar35 + -0x88)" * (cast_expression "(int *)(puVar35 + -0x88)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x88)" ( (binary_expression "puVar35 + -0x88" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x5c) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x5c) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x5c)" * (cast_expression "(undefined4 *)(puVar35 + -0x5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x5c)" ( (binary_expression "puVar35 + -0x5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" identifier = identifier) ;) (if_statement "if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" if (parenthesized_expression "((uVar5 >> (bVar20 & 0x1f) & 1) == 0)" ( (binary_expression "(uVar5 >> (bVar20 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar5 >> (bVar20 & 0x1f) & 1)" ( (binary_expression "uVar5 >> (bVar20 & 0x1f) & 1" (binary_expression "uVar5 >> (bVar20 & 0x1f)" identifier >> (parenthesized_expression "(bVar20 & 0x1f)" ( (binary_expression "bVar20 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x164);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x164)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x164)" * (cast_expression "(byte **)(puVar35 + -0x164)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(pbVar29)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(pbVar29)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar39;" (assignment_expression "puVar38 = puVar39" identifier = identifier) ;) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7a18);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7a18)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-100] = 1;" (assignment_expression "puVar35[-100] = 1" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar41 = (*pcVar33)();" (assignment_expression "uVar41 = (*pcVar33)()" identifier = (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" identifier (argument_list "(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x50) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x50) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x50)" * (cast_expression "(int *)(puVar35 + -0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) goto LAB_0002ed18;" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (goto_statement "goto LAB_0002ed18;" goto statement_identifier ;)) (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" identifier = (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pcVar30)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e51c;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }" { (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar30 != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(*pcVar30 != '\0')" ( (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" else (compound_statement "{\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (byte *)0x1;" (assignment_expression "unaff_s6 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" identifier = (call_expression "(*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" * (cast_expression "(undefined4 *)(puVar35 + -0x164)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x164)" ( (binary_expression "puVar35 + -0x164" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                puVar35[-100] = 0;\n              }" { (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" else (compound_statement "{\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" { (expression_statement "*(byte **)(puVar35 + -0x48) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x48) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" * (cast_expression "(byte **)(puVar35 + -0x48)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x48)" ( (binary_expression "puVar35 + -0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" * (cast_expression "(undefined4 *)(puVar35 + -0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x50)" ( (binary_expression "puVar35 + -0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }" { (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" identifier = (pointer_expression "*(char **)(puVar35 + -0x54)" * (cast_expression "(char **)(puVar35 + -0x54)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x54)" ( (binary_expression "puVar35 + -0x54" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002e51c;" goto statement_identifier ;) })) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7b80)" * (cast_expression "(code **)(iVar15 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7b80)" ( (binary_expression "iVar15 + -0x7b80" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);" statement_identifier : (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;)) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar39;" (assignment_expression "puVar38 = puVar39" identifier = identifier) ;) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar35[-0x10c] = 1;" (assignment_expression "puVar35[-0x10c] = 1" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" identifier = identifier) ;) (labeled_statement "LAB_0002eb98:\n            pbVar43 = pbVar29;" statement_identifier : (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" identifier = identifier) ;)) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar43,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar43,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar43,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar43,uVar41)" identifier (argument_list "(pbVar43,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" identifier (argument_list "(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0xf8) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xf8) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xf8)" * (cast_expression "(int *)(puVar35 + -0xf8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }" { (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) }) (else_clause "else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" else (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" { (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }" if (parenthesized_expression "(iVar9 != -2)" ( (binary_expression "iVar9 != -2" identifier != number_literal) )) (compound_statement "{\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }" { (if_statement "if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }" { (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (*pcVar30 != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(*pcVar30 != '\0')" ( (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" else (compound_statement "{\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "unaff_s6 = (byte *)0x1;" (assignment_expression "unaff_s6 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                  puVar35[-0x10c] = 0;\n                }" { (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ea50;" goto statement_identifier ;) })) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(pcVar30)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) }))) (while_statement "while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }" { (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" identifier = (binary_expression "unaff_s5 + -1" identifier + number_literal)) ;) (expression_statement "puVar35[-0x100] = 0;" (assignment_expression "puVar35[-0x100] = 0" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));" (assignment_expression "pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8))" identifier = (cast_expression "(byte *)(pcVar30 + *(int *)(puVar35 + -0xf8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar30 + *(int *)(puVar35 + -0xf8))" ( (binary_expression "pcVar30 + *(int *)(puVar35 + -0xf8)" identifier + (pointer_expression "*(int *)(puVar35 + -0xf8)" * (cast_expression "(int *)(puVar35 + -0xf8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) ))))) )))) ;) (expression_statement "*(byte **)(puVar35 + -0xfc) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xfc) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "unaff_s6 = pbVar29;" (assignment_expression "unaff_s6 = pbVar29" identifier = identifier) ;) (if_statement "if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;" if (parenthesized_expression "(unaff_s5 == (byte *)0x0)" ( (binary_expression "unaff_s5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed30;" goto statement_identifier ;)) (labeled_statement "LAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;" statement_identifier : (if_statement "if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;" if (parenthesized_expression "(puVar35[-0x10c] != '\0')" ( (binary_expression "puVar35[-0x10c] != '\0'" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002eb98;" goto statement_identifier ;))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*pbVar29 >> 5)" ( (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar29 & 0x1f)" ( (binary_expression "*pbVar29 & 0x1f" (pointer_expression "*pbVar29" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002eb80;" goto statement_identifier ;)) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" identifier = (cast_expression "(byte *)(int)(char)*pbVar29" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar29" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar29" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar29" * identifier))))) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xf0) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xf0) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;" statement_identifier : (if_statement "if (pbVar29 == (byte *)0x0) break;" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;))) (labeled_statement "LAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);" statement_identifier : (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;)) })) (expression_statement "pcVar33 = *(code **)(puVar35 + -0x14c);" (assignment_expression "pcVar33 = *(code **)(puVar35 + -0x14c)" identifier = (pointer_expression "*(code **)(puVar35 + -0x14c)" * (cast_expression "(code **)(puVar35 + -0x14c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14c)" ( (binary_expression "puVar35 + -0x14c" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar28 = (byte *)0x0;" (assignment_expression "pbVar28 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (puVar35[-0x100] != '\0') goto LAB_0002ea60;" if (parenthesized_expression "(puVar35[-0x100] != '\0')" ( (binary_expression "puVar35[-0x100] != '\0'" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ea60;" goto statement_identifier ;)) (labeled_statement "LAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);" statement_identifier : (expression_statement "unaff_s6 = *(byte **)(puVar35 + -0xfc);" (assignment_expression "unaff_s6 = *(byte **)(puVar35 + -0xfc)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xfc)" * (cast_expression "(byte **)(puVar35 + -0xfc)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" statement_identifier : (if_statement "if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" if (parenthesized_expression "(puVar35[-0x10c] == '\0')" ( (binary_expression "puVar35[-0x10c] == '\0'" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }" { (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }" if (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1)" ( (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" * (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" ( (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" * (cast_expression "(int *)(puVar35 + -0x168)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x168)" ( (binary_expression "puVar35 + -0x168" identifier + number_literal) )))) + (binary_expression "(uint)(*unaff_s6 >> 5) * 4" (call_expression "(uint)(*unaff_s6 >> 5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*unaff_s6 >> 5)" ( (binary_expression "*unaff_s6 >> 5" (pointer_expression "*unaff_s6" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*unaff_s6 & 0x1f)" ( (binary_expression "*unaff_s6 & 0x1f" (pointer_expression "*unaff_s6" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }" { (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }" { (expression_statement "puVar35[-0x10c] = 1;" (assignment_expression "puVar35[-0x10c] = 1" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ee14;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = (byte *)(int)(char)*unaff_s6;" (assignment_expression "pbVar29 = (byte *)(int)(char)*unaff_s6" identifier = (cast_expression "(byte *)(int)(char)*unaff_s6" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*unaff_s6" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*unaff_s6" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*unaff_s6" * identifier))))) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)(puVar35 + -0xf0) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xf0) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) )))) = identifier) ;) (labeled_statement "LAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);" statement_identifier : (expression_statement "pcVar33 = *(code **)(puVar35 + -0x14c);" (assignment_expression "pcVar33 = *(code **)(puVar35 + -0x14c)" identifier = (pointer_expression "*(code **)(puVar35 + -0x14c)" * (cast_expression "(code **)(puVar35 + -0x14c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x14c)" ( (binary_expression "puVar35 + -0x14c" identifier + number_literal) ))))) ;)) (expression_statement "pbVar28 = pbVar29;" (assignment_expression "pbVar28 = pbVar29" identifier = identifier) ;) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed84;" goto statement_identifier ;)) (labeled_statement "LAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;" statement_identifier : (expression_statement "pbVar24 = puVar35 + -0x148;" (assignment_expression "pbVar24 = puVar35 + -0x148" identifier = (binary_expression "puVar35 + -0x148" identifier + number_literal)) ;)) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "iVar9 = (*pcVar33)(pbVar10);" (assignment_expression "iVar9 = (*pcVar33)(pbVar10)" identifier = (call_expression "(*pcVar33)(pbVar10)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(pbVar10)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x15c) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x15c) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x15c)" * (cast_expression "(int *)(puVar35 + -0x15c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" identifier = identifier) ;) (if_statement "if (iVar9 != 0) goto LAB_0002ef34;" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002ef34;" goto statement_identifier ;)) (expression_statement "uVar5 = (uint)(byte)puVar35[-0xbc];" (assignment_expression "uVar5 = (uint)(byte)puVar35[-0xbc]" identifier = (cast_expression "(uint)(byte)puVar35[-0xbc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar35[-0xbc]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ])))) ;) (expression_statement "*(byte **)(puVar35 + -0x150) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x150) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x150)" * (cast_expression "(byte **)(puVar35 + -0x150)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" else (compound_statement "{\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" { (labeled_statement "LAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();" statement_identifier : (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" identifier = (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" ( (pointer_expression "**(code **)(iVar15 + -0x7a18)" * (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;)) (expression_statement "pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(unaff_s6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(unaff_s6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(unaff_s6,uVar41)" identifier (argument_list "(unaff_s6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar43 = unaff_s6;" (assignment_expression "pbVar43 = unaff_s6" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" identifier (argument_list "(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0xf8) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xf8) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xf8)" * (cast_expression "(int *)(puVar35 + -0xf8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }" if (parenthesized_expression "(iVar9 != -1)" ( (binary_expression "iVar9 != -1" identifier != number_literal) )) (compound_statement "{\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }" { (if_statement "if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0xfc))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0xfc)" * (cast_expression "(undefined4 *)(puVar35 + -0xfc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ed84;" goto statement_identifier ;) })) (if_statement "if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);" statement_identifier : (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;)) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" identifier = (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(unaff_s4)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                    puVar35[-0x10c] = 0;\n                  }" { (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002ed78;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" identifier = (pointer_expression "*(byte **)(puVar35 + -0xf0)" * (cast_expression "(byte **)(puVar35 + -0xf0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xf0)" ( (binary_expression "puVar35 + -0xf0" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" identifier = identifier) ;) (if_statement "if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }" if (parenthesized_expression "(**(char **)(puVar35 + -0xfc) == '\0')" ( (binary_expression "**(char **)(puVar35 + -0xfc) == '\0'" (pointer_expression "**(char **)(puVar35 + -0xfc)" * (pointer_expression "*(char **)(puVar35 + -0xfc)" * (cast_expression "(char **)(puVar35 + -0xfc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0xfc)" ( (binary_expression "puVar35 + -0xfc" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }" { (if_statement "if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;" if (parenthesized_expression "(pbVar29 == (byte *)0x0)" ( (binary_expression "pbVar29 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ee78;" goto statement_identifier ;)) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;) })) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" * (cast_expression "(undefined4 *)(puVar35 + -0xf8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0xf8)" ( (binary_expression "puVar35 + -0xf8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" identifier [ number_literal ]) = number_literal) ;) (labeled_statement "LAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];" statement_identifier : (expression_statement "uVar5 = (uint)(byte)puVar35[-0xbc];" (assignment_expression "uVar5 = (uint)(byte)puVar35[-0xbc]" identifier = (cast_expression "(uint)(byte)puVar35[-0xbc]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)puVar35[-0xbc]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar35[-0xbc]" identifier [ number_literal ])))) ;)) (expression_statement "*(byte **)(puVar35 + -0x150) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x150) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x150)" * (cast_expression "(byte **)(puVar35 + -0x150)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x150)" ( (binary_expression "puVar35 + -0x150" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" * (cast_expression "(undefined4 *)(puVar35 + -0x15c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x15c)" ( (binary_expression "puVar35 + -0x15c" identifier + number_literal) )))) = number_literal) ;) })))) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_0002ef3c;" goto statement_identifier ;) }))) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002e2ac;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(param_1)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(param_1)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" identifier = identifier) ;) (if_statement "if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }" { (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7a18);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7a18)" identifier = (pointer_expression "*(code **)(iVar15 + -0x7a18)" * (cast_expression "(code **)(iVar15 + -0x7a18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a18)" ( (binary_expression "iVar15 + -0x7a18" identifier + number_literal) ))))) ;) (expression_statement "puVar35[-0x144] = 1;" (assignment_expression "puVar35[-0x144] = 1" (subscript_expression "puVar35[-0x144]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar41 = (*pcVar33)();" (assignment_expression "uVar41 = (*pcVar33)()" identifier = (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" identifier = (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "strnlen1(pbVar6,uVar41)" identifier (argument_list "(pbVar6,uVar41)" ( identifier , identifier ))))) ;) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1)" identifier (argument_list "(puVar35 + -0x128,pbVar6,pbVar24,param_1)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) , identifier , identifier , identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(puVar35 + -0x130) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x130) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x130)" * (cast_expression "(int *)(puVar35 + -0x130)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" { (expression_statement "puVar35[-300] = 0;" (assignment_expression "puVar35[-300] = 0" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e360;" goto statement_identifier ;) })) (if_statement "if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" { (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134))" identifier = (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" ( (pointer_expression "**(code **)(iVar15 + -0x7a8c)" * (pointer_expression "*(code **)(iVar15 + -0x7a8c)" * (cast_expression "(code **)(iVar15 + -0x7a8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7a8c)" ( (binary_expression "iVar15 + -0x7a8c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x134))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x134)" * (cast_expression "(undefined4 *)(puVar35 + -0x134)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar35[-300] = 0;" (assignment_expression "puVar35[-300] = 0" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e360;" goto statement_identifier ;) })) (if_statement "if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }" { (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" * (cast_expression "(undefined4 *)(puVar35 + -0x130)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x130)" ( (binary_expression "puVar35 + -0x130" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x128);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x128)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x128)" * (cast_expression "(byte **)(puVar35 + -0x128)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) ))))) ;) (if_statement "if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;" if (parenthesized_expression "(**(char **)(puVar35 + -0x134) != '\0')" ( (binary_expression "**(char **)(puVar35 + -0x134) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x134)" * (pointer_expression "*(char **)(puVar35 + -0x134)" * (cast_expression "(char **)(puVar35 + -0x134)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x134)" ( (binary_expression "puVar35 + -0x134" identifier + number_literal) ))))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0002ef60;" goto statement_identifier ;)) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) (expression_statement "puVar39 = puVar34 + -0x128;" (assignment_expression "puVar39 = puVar34 + -0x128" identifier = (binary_expression "puVar34 + -0x128" identifier + number_literal)) ;) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" if (parenthesized_expression "(pbVar29 != (byte *)0x0)" ( (binary_expression "pbVar29 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002ed10;" goto statement_identifier ;)) }) (else_clause "else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" else (compound_statement "{\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" { (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x128);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x128)" identifier = (pointer_expression "*(byte **)(puVar35 + -0x128)" * (cast_expression "(byte **)(puVar35 + -0x128)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x128)" ( (binary_expression "puVar35 + -0x128" identifier + number_literal) ))))) ;) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" identifier = (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) ;) }))) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" identifier = (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar35[-300] = 1;" (assignment_expression "puVar35[-300] = 1" (subscript_expression "puVar35[-300]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar9 = (*pcVar33)(param_1);" (assignment_expression "iVar9 = (*pcVar33)(param_1)" identifier = (call_expression "(*pcVar33)(param_1)" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" identifier = (pointer_expression "*(int *)(puVar35 + -0x170)" * (cast_expression "(int *)(puVar35 + -0x170)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x170)" ( (binary_expression "puVar35 + -0x170" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        puVar35[-0x144] = 0;\n      }" { (expression_statement "puVar35[-0x144] = 0;" (assignment_expression "puVar35[-0x144] = 0" (subscript_expression "puVar35[-0x144]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_0002e2a0;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);" statement_identifier : (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) ))) ;)) (expression_statement "puVar39 = puVar38;" (assignment_expression "puVar39 = puVar38" identifier = identifier) ;) (labeled_statement "LAB_0002ef60:\n    pbVar24 = &DAT_000000b2;" statement_identifier : (expression_statement "pbVar24 = &DAT_000000b2;" (assignment_expression "pbVar24 = &DAT_000000b2" identifier = (pointer_expression "&DAT_000000b2" & identifier)) ;)) (expression_statement "pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);" (assignment_expression "pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8)" identifier = (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0xe8)" ( (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xe8" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" * (cast_expression "(int *)(iVar15 + -0x7fc8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + -0x7fc8)" ( (binary_expression "iVar15 + -0x7fc8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(**(code **)(iVar15 + -0x7bb0))();" (call_expression "(**(code **)(iVar15 + -0x7bb0))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb0)" * (pointer_expression "*(code **)(iVar15 + -0x7bb0)" * (cast_expression "(code **)(iVar15 + -0x7bb0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb0)" ( (binary_expression "iVar15 + -0x7bb0" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) }))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79d8)" * (cast_expression "(code **)(iVar15 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79d8)" ( (binary_expression "iVar15 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = mbsnwidth;" (assignment_expression "pcVar42 = mbsnwidth" identifier = identifier) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x46c58)" identifier = (pointer_expression "*(undefined4 **)(pcVar33 + 0x46c58)" * (cast_expression "(undefined4 **)(pcVar33 + 0x46c58)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x46c58)" ( (binary_expression "pcVar33 + 0x46c58" identifier + number_literal) ))))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x46bd8);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x46bd8)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x46bd8)" * (cast_expression "(code **)(pcVar33 + 0x46bd8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x46bd8)" ( (binary_expression "pcVar33 + 0x46bd8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(puVar35 + -0x1bc) = puVar8;" (assignment_expression "*(undefined4 **)(puVar35 + -0x1bc) = puVar8" (pointer_expression "*(undefined4 **)(puVar35 + -0x1bc)" * (cast_expression "(undefined4 **)(puVar35 + -0x1bc)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;" (assignment_expression "*(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0" (pointer_expression "*(code **)(puVar35 + -0x1c8)" * (cast_expression "(code **)(puVar35 + -0x1c8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4e5f0" identifier + number_literal)) ;) (expression_statement "*(byte **)(puVar35 + -400) = unaff_s6;" (assignment_expression "*(byte **)(puVar35 + -400) = unaff_s6" (pointer_expression "*(byte **)(puVar35 + -400)" * (cast_expression "(byte **)(puVar35 + -400)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -400)" ( (binary_expression "puVar35 + -400" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1a4) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x1a4) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x1a4)" * (cast_expression "(byte **)(puVar35 + -0x1a4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1a4)" ( (binary_expression "puVar35 + -0x1a4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar31 = pbVar28 + (int)pbVar43;" (assignment_expression "pbVar31 = pbVar28 + (int)pbVar43" identifier = (binary_expression "pbVar28 + (int)pbVar43" identifier + (cast_expression "(int)pbVar43" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "*(code **)(puVar35 + -0x184) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -0x184) = pcVar42" (pointer_expression "*(code **)(puVar35 + -0x184)" * (cast_expression "(code **)(puVar35 + -0x184)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x184)" ( (binary_expression "puVar35 + -0x184" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar35 + -0x188) = puVar39;" (assignment_expression "*(undefined1 **)(puVar35 + -0x188) = puVar39" (pointer_expression "*(undefined1 **)(puVar35 + -0x188)" * (cast_expression "(undefined1 **)(puVar35 + -0x188)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x188)" ( (binary_expression "puVar35 + -0x188" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x18c) = pbVar23;" (assignment_expression "*(byte **)(puVar35 + -0x18c) = pbVar23" (pointer_expression "*(byte **)(puVar35 + -0x18c)" * (cast_expression "(byte **)(puVar35 + -0x18c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x18c)" ( (binary_expression "puVar35 + -0x18c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x194) = unaff_s5;" (assignment_expression "*(byte **)(puVar35 + -0x194) = unaff_s5" (pointer_expression "*(byte **)(puVar35 + -0x194)" * (cast_expression "(byte **)(puVar35 + -0x194)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x194)" ( (binary_expression "puVar35 + -0x194" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x198) = unaff_s4;" (assignment_expression "*(byte **)(puVar35 + -0x198) = unaff_s4" (pointer_expression "*(byte **)(puVar35 + -0x198)" * (cast_expression "(byte **)(puVar35 + -0x198)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x198)" ( (binary_expression "puVar35 + -0x198" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x19c) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x19c) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x19c)" * (cast_expression "(byte **)(puVar35 + -0x19c)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x19c)" ( (binary_expression "puVar35 + -0x19c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1a0) = pbVar10;" (assignment_expression "*(byte **)(puVar35 + -0x1a0) = pbVar10" (pointer_expression "*(byte **)(puVar35 + -0x1a0)" * (cast_expression "(byte **)(puVar35 + -0x1a0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1a0)" ( (binary_expression "puVar35 + -0x1a0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1a8) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x1a8) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x1a8)" * (cast_expression "(byte **)(puVar35 + -0x1a8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1a8)" ( (binary_expression "puVar35 + -0x1a8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x178) = pbVar24;" (assignment_expression "*(byte **)(puVar35 + -0x178) = pbVar24" (pointer_expression "*(byte **)(puVar35 + -0x178)" * (cast_expression "(byte **)(puVar35 + -0x178)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar35 + -0x1ac) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1ac) = *puVar8" (pointer_expression "*(undefined4 *)(puVar35 + -0x1ac)" * (cast_expression "(undefined4 *)(puVar35 + -0x1ac)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1ac)" ( (binary_expression "puVar35 + -0x1ac" identifier + number_literal) )))) = (pointer_expression "*puVar8" * identifier)) ;) (expression_statement "uVar5 = (*pcVar40)();" (assignment_expression "uVar5 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" if (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 2" identifier < number_literal) )) (compound_statement "{\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }" { (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }" if (parenthesized_expression "(pbVar28 < pbVar31)" ( (binary_expression "pbVar28 < pbVar31" identifier < identifier) )) (compound_statement "{\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }" { (expression_statement "piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();" (assignment_expression "piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))()" identifier = (cast_expression "(int *)(**(code **)(iVar15 + -0x7bb4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(iVar15 + -0x7bb4))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb4))" ( (pointer_expression "**(code **)(iVar15 + -0x7bb4)" * (pointer_expression "*(code **)(iVar15 + -0x7bb4)" * (cast_expression "(code **)(iVar15 + -0x7bb4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x7bb4)" ( (binary_expression "iVar15 + -0x7bb4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "pbVar43 = (byte *)0x7fffffff;" (assignment_expression "pbVar43 = (byte *)0x7fffffff" identifier = (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (do_statement "do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);" do (compound_statement "{\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      }" { (expression_statement "pbVar24 = pbVar28 + 1;" (assignment_expression "pbVar24 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);" (assignment_expression "uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" identifier = (pointer_expression "*(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" * (cast_expression "(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar13 + (uint)*pbVar28 * 2)" ( (binary_expression "*piVar13 + (uint)*pbVar28 * 2" (pointer_expression "*piVar13" * identifier) + (binary_expression "(uint)*pbVar28 * 2" (binary_expression "(uint)*pbVar28" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) ))))) ;) (if_statement "if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" if (parenthesized_expression "((uVar1 & 0x40) == 0)" ( (binary_expression "(uVar1 & 0x40) == 0" (parenthesized_expression "(uVar1 & 0x40)" ( (binary_expression "uVar1 & 0x40" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }" { (if_statement "if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;" if (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 2) != 0)" ( (binary_expression "(*(uint *)(puVar35 + -0x178) & 2) != 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 2)" ( (binary_expression "*(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;)) (if_statement "if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;" if (parenthesized_expression "((uVar1 & 0x200) == 0)" ( (binary_expression "(uVar1 & 0x200) == 0" (parenthesized_expression "(uVar1 & 0x200)" ( (binary_expression "uVar1 & 0x200" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002f1dc;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" else (compound_statement "{\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" { (labeled_statement "LAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);" statement_identifier : (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar35 + -0x1bc)" * (cast_expression "(int **)(puVar35 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) ))))) ;)) (if_statement "if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;" if (parenthesized_expression "(pbVar6 == (byte *)0x7fffffff)" ( (binary_expression "pbVar6 == (byte *)0x7fffffff" identifier == (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002f064;" goto statement_identifier ;)) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) }))) (expression_statement "pbVar28 = pbVar24;" (assignment_expression "pbVar28 = pbVar24" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar31 != pbVar24)" ( (binary_expression "pbVar31 != pbVar24" identifier != identifier) )) ;) (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar35 + -0x1bc)" * (cast_expression "(int **)(puVar35 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002f064;" goto statement_identifier ;) })) }) (else_clause "else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" else (compound_statement "{\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" { (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }" if (parenthesized_expression "(pbVar28 < pbVar31)" ( (binary_expression "pbVar28 < pbVar31" identifier < identifier) )) (compound_statement "{\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }" { (expression_statement "*(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;" (assignment_expression "*(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x1c0)" * (cast_expression "(uint *)(puVar35 + -0x1c0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c0)" ( (binary_expression "puVar35 + -0x1c0" identifier + number_literal) )))) = (binary_expression "*(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal)) ;) (do_statement "do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);" do (compound_statement "{\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      }" { (expression_statement "iVar9 = (int)(char)*pbVar28;" (assignment_expression "iVar9 = (int)(char)*pbVar28" identifier = (cast_expression "(int)(char)*pbVar28" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar28" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar28" * identifier)))) ;) (if_statement "if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" if (parenthesized_expression "(iVar9 < 0x40)" ( (binary_expression "iVar9 < 0x40" identifier < number_literal) )) (compound_statement "{\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }" { (if_statement "if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;" if (parenthesized_expression "((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4))" ( (binary_expression "(0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)" (parenthesized_expression "(0x24 < iVar9)" ( (binary_expression "0x24 < iVar9" number_literal < identifier) )) || (parenthesized_expression "((iVar9 - 0x20U & 0xff) < 4)" ( (binary_expression "(iVar9 - 0x20U & 0xff) < 4" (parenthesized_expression "(iVar9 - 0x20U & 0xff)" ( (binary_expression "iVar9 - 0x20U & 0xff" (binary_expression "iVar9 - 0x20U" identifier - number_literal) & number_literal) )) < number_literal) ))) )) (goto_statement "goto LAB_0002f050;" goto statement_identifier ;)) (labeled_statement "LAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(puVar35 + -0x1b4) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1b4) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x1b4)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b4)" ( (binary_expression "puVar35 + -0x1b4" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(puVar35 + -0x1b0) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1b0) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x1b0)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b0)" ( (binary_expression "puVar35 + -0x1b0" identifier + number_literal) )))) = number_literal) ;) (do_statement "do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);" do (compound_statement "{\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          }" { (expression_statement "pbVar43 = pbVar28;" (assignment_expression "pbVar43 = pbVar28" identifier = identifier) ;) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" identifier = (call_expression "rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" identifier (argument_list "(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" ( (binary_expression "puVar35 + -0x1b8" identifier + number_literal) , identifier , (binary_expression "(int)pbVar31 - (int)pbVar28" (cast_expression "(int)pbVar31" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar28" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "puVar35 + -0x1b4" identifier + number_literal) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }" { (if_statement "if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;" if (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 1) == 0)" ( (binary_expression "(*(uint *)(puVar35 + -0x178) & 1) == 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 1)" ( (binary_expression "*(uint *)(puVar35 + -0x178) & 1" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0002f050;" goto statement_identifier ;)) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;) })) (if_statement "if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }" if (parenthesized_expression "(iVar9 == -2)" ( (binary_expression "iVar9 == -2" identifier == number_literal) )) (compound_statement "{\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }" { (if_statement "if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;" if (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 1) != 0)" ( (binary_expression "(*(uint *)(puVar35 + -0x178) & 1) != 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 1)" ( (binary_expression "*(uint *)(puVar35 + -0x178) & 1" (pointer_expression "*(uint *)(puVar35 + -0x178)" * (cast_expression "(uint *)(puVar35 + -0x178)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x178)" ( (binary_expression "puVar35 + -0x178" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;)) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) (expression_statement "pbVar28 = pbVar31;" (assignment_expression "pbVar28 = pbVar31" identifier = identifier) ;) (break_statement "break;" break ;) })) (if_statement "if (iVar9 == 0) {\n              iVar9 = 1;\n            }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar9 = 1;\n            }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) })) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8))" identifier = (call_expression "(**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8))" (parenthesized_expression "(**(code **)(iVar15 + -0x797c))" ( (pointer_expression "**(code **)(iVar15 + -0x797c)" * (pointer_expression "*(code **)(iVar15 + -0x797c)" * (cast_expression "(code **)(iVar15 + -0x797c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x797c)" ( (binary_expression "iVar15 + -0x797c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x1b8))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x1b8)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b8)" ( (binary_expression "puVar35 + -0x1b8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" if (parenthesized_expression "(iVar11 < 0)" ( (binary_expression "iVar11 < 0" identifier < number_literal) )) (compound_statement "{\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }" { (if_statement "if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;" if (parenthesized_expression "(*(int *)(puVar35 + -0x1c0) != 0)" ( (binary_expression "*(int *)(puVar35 + -0x1c0) != 0" (pointer_expression "*(int *)(puVar35 + -0x1c0)" * (cast_expression "(int *)(puVar35 + -0x1c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c0)" ( (binary_expression "puVar35 + -0x1c0" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0002f210;" goto statement_identifier ;)) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8))" identifier = (call_expression "(**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8))" (parenthesized_expression "(**(code **)(iVar15 + -0x79ec))" ( (pointer_expression "**(code **)(iVar15 + -0x79ec)" * (pointer_expression "*(code **)(iVar15 + -0x79ec)" * (cast_expression "(code **)(iVar15 + -0x79ec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79ec)" ( (binary_expression "iVar15 + -0x79ec" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar35 + -0x1b8))" ( (pointer_expression "*(undefined4 *)(puVar35 + -0x1b8)" * (cast_expression "(undefined4 *)(puVar35 + -0x1b8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1b8)" ( (binary_expression "puVar35 + -0x1b8" identifier + number_literal) )))) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }" { (if_statement "if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;" if (parenthesized_expression "(pbVar6 == (byte *)0x7fffffff)" ( (binary_expression "pbVar6 == (byte *)0x7fffffff" identifier == (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002f234;" goto statement_identifier ;)) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;) })) }) (else_clause "else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" else (compound_statement "{\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" { (if_statement "if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }" if (parenthesized_expression "(0x7fffffff - (int)pbVar6 < iVar11)" ( (binary_expression "0x7fffffff - (int)pbVar6 < iVar11" (binary_expression "0x7fffffff - (int)pbVar6" number_literal - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier)) < identifier) )) (compound_statement "{\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }" { (labeled_statement "LAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;" statement_identifier : (expression_statement "pbVar6 = (byte *)0x7fffffff;" (assignment_expression "pbVar6 = (byte *)0x7fffffff" identifier = (cast_expression "(byte *)0x7fffffff" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_0002f060;" goto statement_identifier ;) })) (expression_statement "pbVar6 = pbVar6 + iVar11;" (assignment_expression "pbVar6 = pbVar6 + iVar11" identifier = (binary_expression "pbVar6 + iVar11" identifier + identifier)) ;) }))) (expression_statement "pbVar28 = pbVar28 + iVar9;" (assignment_expression "pbVar28 = pbVar28 + iVar9" identifier = (binary_expression "pbVar28 + iVar9" identifier + identifier)) ;) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4)" identifier = (call_expression "(**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" ( (pointer_expression "**(code **)(iVar15 + -0x799c)" * (pointer_expression "*(code **)(iVar15 + -0x799c)" * (cast_expression "(code **)(iVar15 + -0x799c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x799c)" ( (binary_expression "iVar15 + -0x799c" identifier + number_literal) ))))) )) (argument_list "(puVar35 + -0x1b4)" ( (binary_expression "puVar35 + -0x1b4" identifier + number_literal) )))) ;) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1c8)" * (cast_expression "(int *)(puVar35 + -0x1c8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1c8)" ( (binary_expression "puVar35 + -0x1c8" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) ;) }) (else_clause "else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" else (compound_statement "{\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" { (if_statement "if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;" if (parenthesized_expression "((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))" ( (binary_expression "(iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" (parenthesized_expression "(iVar9 < 0x41)" ( (binary_expression "iVar9 < 0x41" identifier < number_literal) )) || (parenthesized_expression "((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" ( (parenthesized_expression "(0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))" ( (binary_expression "0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))" (binary_expression "0x5f < iVar9" number_literal < identifier) && (parenthesized_expression "(0x1d < (iVar9 - 0x61U & 0xff))" ( (binary_expression "0x1d < (iVar9 - 0x61U & 0xff)" number_literal < (parenthesized_expression "(iVar9 - 0x61U & 0xff)" ( (binary_expression "iVar9 - 0x61U & 0xff" (binary_expression "iVar9 - 0x61U" identifier - number_literal) & number_literal) ))) ))) )) ))) )) (goto_statement "goto LAB_0002f0c8;" goto statement_identifier ;)) (labeled_statement "LAB_0002f050:\n          pbVar6 = pbVar6 + 1;" statement_identifier : (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" identifier = (binary_expression "pbVar6 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar28 = pbVar28 + 1;" (assignment_expression "pbVar28 = pbVar28 + 1" identifier = (binary_expression "pbVar28 + 1" identifier + number_literal)) ;) }))) }) while (parenthesized_expression "(pbVar28 < pbVar31)" ( (binary_expression "pbVar28 < pbVar31" identifier < identifier) )) ;) })) }))) (labeled_statement "LAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);" statement_identifier : (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" identifier = (pointer_expression "*(int **)(puVar35 + -0x1bc)" * (cast_expression "(int **)(puVar35 + -0x1bc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1bc)" ( (binary_expression "puVar35 + -0x1bc" identifier + number_literal) ))))) ;)) (labeled_statement "LAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);" statement_identifier : (expression_statement "iVar9 = *(int *)(puVar35 + -0x1ac);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0x1ac)" identifier = (pointer_expression "*(int *)(puVar35 + -0x1ac)" * (cast_expression "(int *)(puVar35 + -0x1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar35 + -0x1ac)" ( (binary_expression "puVar35 + -0x1ac" identifier + number_literal) ))))) ;)) (if_statement "if (iVar9 == *piVar19) {\n    return pbVar6;\n  }" if (parenthesized_expression "(iVar9 == *piVar19)" ( (binary_expression "iVar9 == *piVar19" identifier == (pointer_expression "*piVar19" * identifier)) )) (compound_statement "{\n    return pbVar6;\n  }" { (return_statement "return pbVar6;" return identifier ;) })) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" identifier = (pointer_expression "*(code **)(iVar15 + -0x79d8)" * (cast_expression "(code **)(iVar15 + -0x79d8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + -0x79d8)" ( (binary_expression "iVar15 + -0x79d8" identifier + number_literal) ))))) ;) (expression_statement "pcVar42 = gnu_mbswidth;" (assignment_expression "pcVar42 = gnu_mbswidth" identifier = identifier) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x468a8);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x468a8)" identifier = (pointer_expression "*(code **)(pcVar33 + 0x468a8)" * (cast_expression "(code **)(pcVar33 + 0x468a8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar33 + 0x468a8)" ( (binary_expression "pcVar33 + 0x468a8" identifier + number_literal) ))))) ;) (expression_statement "*(byte **)(puVar35 + -0x1e0) = pbVar31;" (assignment_expression "*(byte **)(puVar35 + -0x1e0) = pbVar31" (pointer_expression "*(byte **)(puVar35 + -0x1e0)" * (cast_expression "(byte **)(puVar35 + -0x1e0)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1e0)" ( (binary_expression "puVar35 + -0x1e0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(puVar35 + -0x1e4) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x1e4) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x1e4)" * (cast_expression "(byte **)(puVar35 + -0x1e4)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1e4)" ( (binary_expression "puVar35 + -0x1e4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x1dc) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -0x1dc) = pcVar42" (pointer_expression "*(code **)(puVar35 + -0x1dc)" * (cast_expression "(code **)(puVar35 + -0x1dc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1dc)" ( (binary_expression "puVar35 + -0x1dc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;" (assignment_expression "*(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334" (pointer_expression "*(code **)(puVar35 + -0x1f0)" * (cast_expression "(code **)(puVar35 + -0x1f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar35 + -0x1f0)" ( (binary_expression "puVar35 + -0x1f0" identifier + number_literal) )))) = (binary_expression "pcVar33 + 0x4e334" identifier + number_literal)) ;) (expression_statement "uVar41 = (*pcVar40)();" (assignment_expression "uVar41 = (*pcVar40)()" identifier = (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);" (assignment_expression "pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43)" identifier = (cast_expression "(byte *)mbsnwidth(iVar9,uVar41,pbVar43)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "mbsnwidth(iVar9,uVar41,pbVar43)" identifier (argument_list "(iVar9,uVar41,pbVar43)" ( identifier , identifier , identifier ))))) ;) (return_statement "return pbVar28;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + IDENT) + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT - IDENT)) ;) (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) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) != IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (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 + LIT) )))) * LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))) & LIT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (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 + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( 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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;)) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (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 = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (compound_statement { (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) (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) ))))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) = LIT) ;) (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 IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 = (binary_expression IDENT + LIT)) ;) (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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) ))))) ;) (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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_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 IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (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 IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (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 = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;)) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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) ))))) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (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 = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_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) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;)) (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 = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (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 + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))))) ;) }) while (parenthesized_expression ( BOOL )) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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) ))))) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) (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) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) < IDENT) ))) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ))) <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , 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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) }) while (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 (subscript_expression IDENT [ LIT ]) != LIT) )) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (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)) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression 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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (pointer_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 IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;)) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (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 IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;)) (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 = (call_expression IDENT (argument_list ( IDENT , IDENT , 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( IDENT ))) * IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (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 = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_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 IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (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 = (binary_expression IDENT != LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT)) ;) }))) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (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 IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) ))) <= IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (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 IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) ))) <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (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) ))))))) ;)) (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 (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (do_statement do (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (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) ))))) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (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 = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (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 = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) ))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;)) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })))) }) while (parenthesized_expression ( BOOL )) ;) })) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( 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 = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_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 IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) < LIT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (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 ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 { (if_statement if (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 ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (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) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression LIT < IDENT) && (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (return_statement return IDENT ;) })))
(function_definition "byte * FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)\n\n{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}" (type_identifier "byte") (pointer_declarator "* FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" (* "*") (function_declarator "FUN_0002d480(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" (identifier "FUN_0002d480") (parameter_list "(byte *param_1,int param_2,uint param_3,undefined4 *param_4)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")")))) (compound_statement "{\n  ushort uVar1;\n  bool bVar2;\n  undefined4 *puVar3;\n  byte *pbVar4;\n  uint uVar5;\n  byte *pbVar6;\n  uint uVar7;\n  undefined4 *puVar8;\n  int iVar9;\n  byte *pbVar10;\n  int iVar11;\n  char cVar14;\n  undefined4 *puVar12;\n  int *piVar13;\n  int iVar15;\n  byte bVar20;\n  undefined4 uVar16;\n  byte *pbVar17;\n  undefined4 *puVar18;\n  int *piVar19;\n  byte *pbVar21;\n  undefined4 *puVar22;\n  byte *pbVar23;\n  byte *pbVar24;\n  undefined4 uVar25;\n  byte *pbVar26;\n  uint *puVar27;\n  byte *pbVar28;\n  byte *pbVar29;\n  char *pcVar30;\n  byte *pbVar31;\n  int unaff_s2;\n  undefined1 *unaff_s3;\n  byte *unaff_s4;\n  byte *unaff_s5;\n  byte *unaff_s6;\n  undefined4 unaff_s7;\n  undefined *puVar32;\n  code *pcVar33;\n  undefined1 *puVar34;\n  undefined1 *puVar35;\n  undefined1 *puVar36;\n  undefined1 *puVar37;\n  undefined1 *puVar38;\n  undefined1 *puVar39;\n  code *pcVar40;\n  undefined4 uVar41;\n  code *pcVar42;\n  byte *pbVar43;\n  undefined1 auStack_38 [16];\n  undefined4 local_1c;\n  int local_14;\n  \n  pbVar28 = PTR___stack_chk_guard_00075be8;\n  puVar34 = auStack_38;\n  uVar5 = param_3 * 4;\n  local_14 = *(int *)PTR___stack_chk_guard_00075be8;\n  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }\nLAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }\n  pcVar40 = FUN_0002d670;\n  puVar32 = PTR___stack_chk_fail_00075ba8;\n  (*(code *)PTR___stack_chk_fail_00075ba8)();\n  pbVar24 = &DAT_000000b3;\n  iVar15 = *(int *)(puVar32 + 0x47f48);\n  pcVar33 = *(code **)(puVar32 + 0x48360);\n  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);\n  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;\n  *(code **)(puVar34 + -4) = pcVar40;\n  uVar41 = 0x2d6ac;\n  iVar15 = iVar15 + -0x114;\n  (*pcVar33)();\n  puVar35 = puVar34 + -0x128;\n  puVar38 = puVar34 + -0x128;\n  puVar39 = puVar34 + -0x128;\n  puVar37 = puVar34 + -0x128;\n  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);\n  pcVar40 = *(code **)(pcVar33 + 0x48238);\n  *(undefined1 **)(puVar34 + -0x28) = auStack_38;\n  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;\n  *(undefined4 **)(puVar34 + -0x10c) = puVar8;\n  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;\n  *(int *)(puVar34 + -0x108) = iVar15;\n  *(undefined4 *)(puVar34 + -0x24) = uVar41;\n  *(byte **)(puVar34 + -0x30) = unaff_s6;\n  *(byte **)(puVar34 + -0x34) = unaff_s5;\n  *(byte **)(puVar34 + -0x38) = unaff_s4;\n  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;\n  *(int *)(puVar34 + -0x40) = unaff_s2;\n  *(byte **)(puVar34 + -0x44) = pbVar28;\n  *(byte **)(puVar34 + -0x48) = param_1;\n  *(byte **)(puVar34 + -0x110) = pbVar24;\n  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;\n  pbVar6 = pbVar23;\n  uVar5 = (*pcVar40)(pbVar23);\n  iVar15 = *(int *)(puVar34 + -0x118);\n  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);\n  *(uint *)(puVar34 + -0x104) = uVar5;\n  puVar36 = puVar34 + -0x128;\n  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }\n  pbVar43 = (byte *)0x0;\nLAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  puVar35 = puVar36;\n  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }\n  goto LAB_0002e0e0;\nLAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);\n  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;\n  if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }\n  iVar9 = 0;\n  pbVar23 = (byte *)0x2;\n  pbVar24 = param_1;\nLAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];\n  do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );\n  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;\nLAB_0002d978:\n  pbVar23 = pbVar23 + 1;\n  pbVar24 = pbVar24 + 0x28;\n  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;\n  goto LAB_0002d8f0;\ncode_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);\n  pbVar23 = *(byte **)(puVar34 + -0x74);\nLAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;\n  unaff_s2 = unaff_s2 + 1;\n  puVar34[-0x78] = 0;\n  *(byte **)(puVar34 + -0x74) = pbVar23;\n  if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }\n  goto LAB_0002daa0;\nLAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);\nLAB_0002dd68:\n  puVar34[-0xb0] = 0;\n  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));\n  *(byte **)(puVar34 + -0xac) = pbVar28;\njoined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;\n  if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }\n  goto LAB_0002dd80;\ncode_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002df14:\n  puVar34[-0x6c] = 0;\n  *(undefined4 *)(puVar34 + -0x70) = 1;\n  puVar34[-0x78] = 1;\n  goto LAB_0002d9f0;\nLAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);\nLAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;\n  puVar35[-200] = 0;\n  *(byte **)(puVar35 + -0xc4) = pbVar29;\n  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;\n  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;\n  goto LAB_0002e6f4;\nLAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);\n  goto LAB_0002e2ac;\nLAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;\n  goto LAB_0002f060;\nLAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);\nLAB_0002e0bc:\n  pbVar24 = &DAT_00000096;\n  pcVar33 = *(code **)(iVar15 + -0x7bb0);\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);\n  (*pcVar33)();\nLAB_0002e0e0:\n  pcVar42 = mbsstr;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);\n  pcVar40 = *(code **)(pcVar33 + 0x47a80);\n  *(undefined4 **)(puVar35 + -0x154) = puVar8;\n  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;\n  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;\n  *(int *)(puVar35 + -0x20) = unaff_s2;\n  *(code **)(puVar35 + -4) = pcVar42;\n  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;\n  *(byte **)(puVar35 + -0xc) = pbVar23;\n  *(byte **)(puVar35 + -0x10) = unaff_s6;\n  *(byte **)(puVar35 + -0x14) = unaff_s5;\n  *(byte **)(puVar35 + -0x18) = unaff_s4;\n  *(byte **)(puVar35 + -0x24) = pbVar28;\n  *(byte **)(puVar35 + -0x28) = param_1;\n  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;\n  pbVar43 = pbVar6;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x170);\n  pbVar31 = pbVar10;\n  if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = mbsnwidth;\n  (*pcVar33)();\n  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);\n  pcVar40 = *(code **)(pcVar33 + 0x46bd8);\n  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;\n  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;\n  *(byte **)(puVar35 + -400) = unaff_s6;\n  *(byte **)(puVar35 + -0x1a4) = pbVar29;\n  pbVar31 = pbVar28 + (int)pbVar43;\n  *(code **)(puVar35 + -0x184) = pcVar42;\n  *(undefined1 **)(puVar35 + -0x188) = puVar39;\n  *(byte **)(puVar35 + -0x18c) = pbVar23;\n  *(byte **)(puVar35 + -0x194) = unaff_s5;\n  *(byte **)(puVar35 + -0x198) = unaff_s4;\n  *(byte **)(puVar35 + -0x19c) = pbVar6;\n  *(byte **)(puVar35 + -0x1a0) = pbVar10;\n  *(byte **)(puVar35 + -0x1a8) = param_1;\n  *(byte **)(puVar35 + -0x178) = pbVar24;\n  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;\n  uVar5 = (*pcVar40)();\n  iVar15 = *(int *)(puVar35 + -0x1c8);\n  if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }\nLAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);\nLAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);\n  if (iVar9 == *piVar19) {\n    return pbVar6;\n  }\n  pcVar33 = *(code **)(iVar15 + -0x79d8);\n  pcVar42 = gnu_mbswidth;\n  (*pcVar33)();\n  pcVar40 = *(code **)(pcVar33 + 0x468a8);\n  *(byte **)(puVar35 + -0x1e0) = pbVar31;\n  *(byte **)(puVar35 + -0x1e4) = pbVar6;\n  *(code **)(puVar35 + -0x1dc) = pcVar42;\n  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;\n  uVar41 = (*pcVar40)();\n  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);\n  return pbVar28;\n}" ({ "{") (declaration "ushort uVar1;" (type_identifier "ushort") (identifier "uVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "char cVar14;" (primitive_type "char") (identifier "cVar14") (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int *piVar13;" (primitive_type "int") (pointer_declarator "*piVar13" (* "*") (identifier "piVar13")) (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "byte bVar20;" (type_identifier "byte") (identifier "bVar20") (; ";")) (declaration "undefined4 uVar16;" (type_identifier "undefined4") (identifier "uVar16") (; ";")) (declaration "byte *pbVar17;" (type_identifier "byte") (pointer_declarator "*pbVar17" (* "*") (identifier "pbVar17")) (; ";")) (declaration "undefined4 *puVar18;" (type_identifier "undefined4") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "int *piVar19;" (primitive_type "int") (pointer_declarator "*piVar19" (* "*") (identifier "piVar19")) (; ";")) (declaration "byte *pbVar21;" (type_identifier "byte") (pointer_declarator "*pbVar21" (* "*") (identifier "pbVar21")) (; ";")) (declaration "undefined4 *puVar22;" (type_identifier "undefined4") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "byte *pbVar23;" (type_identifier "byte") (pointer_declarator "*pbVar23" (* "*") (identifier "pbVar23")) (; ";")) (declaration "byte *pbVar24;" (type_identifier "byte") (pointer_declarator "*pbVar24" (* "*") (identifier "pbVar24")) (; ";")) (declaration "undefined4 uVar25;" (type_identifier "undefined4") (identifier "uVar25") (; ";")) (declaration "byte *pbVar26;" (type_identifier "byte") (pointer_declarator "*pbVar26" (* "*") (identifier "pbVar26")) (; ";")) (declaration "uint *puVar27;" (type_identifier "uint") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "byte *pbVar28;" (type_identifier "byte") (pointer_declarator "*pbVar28" (* "*") (identifier "pbVar28")) (; ";")) (declaration "byte *pbVar29;" (type_identifier "byte") (pointer_declarator "*pbVar29" (* "*") (identifier "pbVar29")) (; ";")) (declaration "char *pcVar30;" (primitive_type "char") (pointer_declarator "*pcVar30" (* "*") (identifier "pcVar30")) (; ";")) (declaration "byte *pbVar31;" (type_identifier "byte") (pointer_declarator "*pbVar31" (* "*") (identifier "pbVar31")) (; ";")) (declaration "int unaff_s2;" (primitive_type "int") (identifier "unaff_s2") (; ";")) (declaration "undefined1 *unaff_s3;" (type_identifier "undefined1") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3")) (; ";")) (declaration "byte *unaff_s4;" (type_identifier "byte") (pointer_declarator "*unaff_s4" (* "*") (identifier "unaff_s4")) (; ";")) (declaration "byte *unaff_s5;" (type_identifier "byte") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5")) (; ";")) (declaration "byte *unaff_s6;" (type_identifier "byte") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")) (; ";")) (declaration "undefined4 unaff_s7;" (type_identifier "undefined4") (identifier "unaff_s7") (; ";")) (declaration "undefined *puVar32;" (type_identifier "undefined") (pointer_declarator "*puVar32" (* "*") (identifier "puVar32")) (; ";")) (declaration "code *pcVar33;" (type_identifier "code") (pointer_declarator "*pcVar33" (* "*") (identifier "pcVar33")) (; ";")) (declaration "undefined1 *puVar34;" (type_identifier "undefined1") (pointer_declarator "*puVar34" (* "*") (identifier "puVar34")) (; ";")) (declaration "undefined1 *puVar35;" (type_identifier "undefined1") (pointer_declarator "*puVar35" (* "*") (identifier "puVar35")) (; ";")) (declaration "undefined1 *puVar36;" (type_identifier "undefined1") (pointer_declarator "*puVar36" (* "*") (identifier "puVar36")) (; ";")) (declaration "undefined1 *puVar37;" (type_identifier "undefined1") (pointer_declarator "*puVar37" (* "*") (identifier "puVar37")) (; ";")) (declaration "undefined1 *puVar38;" (type_identifier "undefined1") (pointer_declarator "*puVar38" (* "*") (identifier "puVar38")) (; ";")) (declaration "undefined1 *puVar39;" (type_identifier "undefined1") (pointer_declarator "*puVar39" (* "*") (identifier "puVar39")) (; ";")) (declaration "code *pcVar40;" (type_identifier "code") (pointer_declarator "*pcVar40" (* "*") (identifier "pcVar40")) (; ";")) (declaration "undefined4 uVar41;" (type_identifier "undefined4") (identifier "uVar41") (; ";")) (declaration "code *pcVar42;" (type_identifier "code") (pointer_declarator "*pcVar42" (* "*") (identifier "pcVar42")) (; ";")) (declaration "byte *pbVar43;" (type_identifier "byte") (pointer_declarator "*pbVar43" (* "*") (identifier "pbVar43")) (; ";")) (declaration "undefined1 auStack_38 [16];" (type_identifier "undefined1") (array_declarator "auStack_38 [16]" (identifier "auStack_38") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_1c;" (type_identifier "undefined4") (identifier "local_1c") (; ";")) (declaration "int local_14;" (primitive_type "int") (identifier "local_14") (; ";")) (expression_statement "pbVar28 = PTR___stack_chk_guard_00075be8;" (assignment_expression "pbVar28 = PTR___stack_chk_guard_00075be8" (identifier "pbVar28") (= "=") (identifier "PTR___stack_chk_guard_00075be8")) (; ";")) (expression_statement "puVar34 = auStack_38;" (assignment_expression "puVar34 = auStack_38" (identifier "puVar34") (= "=") (identifier "auStack_38")) (; ";")) (expression_statement "uVar5 = param_3 * 4;" (assignment_expression "uVar5 = param_3 * 4" (identifier "uVar5") (= "=") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4"))) (; ";")) (expression_statement "local_14 = *(int *)PTR___stack_chk_guard_00075be8;" (assignment_expression "local_14 = *(int *)PTR___stack_chk_guard_00075be8" (identifier "local_14") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00075be8" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00075be8" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00075be8")))) (; ";")) (if_statement "if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }\n  else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" (if "if") (parenthesized_expression "(((int)uVar5 < 0) || (param_3 >> 0x1e != 0))" (( "(") (binary_expression "((int)uVar5 < 0) || (param_3 >> 0x1e != 0)" (parenthesized_expression "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_3 >> 0x1e != 0)" (( "(") (binary_expression "param_3 >> 0x1e != 0" (binary_expression "param_3 >> 0x1e" (identifier "param_3") (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_0002d620:\n    pbVar6 = (byte *)0x0;\n  }" ({ "{") (labeled_statement "LAB_0002d620:\n    pbVar6 = (byte *)0x0;" (statement_identifier "LAB_0002d620") (: ":") (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}")) (else_clause "else {\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" (else "else") (compound_statement "{\n    if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }\n    puVar34 = puVar36;\n    *(undefined4 *)(uVar5 + 4) = 1;\n    if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }\n    *param_4 = 0;\n    uVar7 = 0;\n    bVar20 = *param_1;\n    pbVar6 = param_1;\nLAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }\nLAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();\n    pbVar6 = (byte *)0x1;\n  }" ({ "{") (if_statement "if (uVar5 < 0xfb1) {\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }\n    else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" (if "if") (parenthesized_expression "(uVar5 < 0xfb1)" (( "(") (binary_expression "uVar5 < 0xfb1" (identifier "uVar5") (< "<") (number_literal "0xfb1")) () ")")) (compound_statement "{\n      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);\n      puVar34 = auStack_38 + iVar15;\n      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;\n      pbVar6 = (byte *)0x0;\n      puVar36 = auStack_38 + iVar15;\n      if (uVar5 == 0) goto LAB_0002d5c8;\n    }" ({ "{") (expression_statement "iVar15 = -(uVar5 + 0x16 & 0xfffffff8);" (assignment_expression "iVar15 = -(uVar5 + 0x16 & 0xfffffff8)" (identifier "iVar15") (= "=") (unary_expression "-(uVar5 + 0x16 & 0xfffffff8)" (- "-") (parenthesized_expression "(uVar5 + 0x16 & 0xfffffff8)" (( "(") (binary_expression "uVar5 + 0x16 & 0xfffffff8" (binary_expression "uVar5 + 0x16" (identifier "uVar5") (+ "+") (number_literal "0x16")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar34 = auStack_38 + iVar15;" (assignment_expression "puVar34 = auStack_38 + iVar15" (identifier "puVar34") (= "=") (binary_expression "auStack_38 + iVar15" (identifier "auStack_38") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;" (assignment_expression "uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0" (identifier "uVar5") (= "=") (binary_expression "(int)&local_1c + iVar15 + 3 & 0xfffffff0" (binary_expression "(int)&local_1c + iVar15 + 3" (binary_expression "(int)&local_1c + iVar15" (cast_expression "(int)&local_1c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_1c" (& "&") (identifier "local_1c"))) (+ "+") (identifier "iVar15")) (+ "+") (number_literal "3")) (& "&") (number_literal "0xfffffff0"))) (; ";")) (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar36 = auStack_38 + iVar15;" (assignment_expression "puVar36 = auStack_38 + iVar15" (identifier "puVar36") (= "=") (binary_expression "auStack_38 + iVar15" (identifier "auStack_38") (+ "+") (identifier "iVar15"))) (; ";")) (if_statement "if (uVar5 == 0) goto LAB_0002d5c8;" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002d5c8;" (goto "goto") (statement_identifier "LAB_0002d5c8") (; ";"))) (} "}")) (else_clause "else {\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" (else "else") (compound_statement "{\n      local_1c = param_2;\n      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);\n      param_2 = local_1c;\n      puVar36 = auStack_38;\n      if (uVar5 == 0) goto LAB_0002d620;\n    }" ({ "{") (expression_statement "local_1c = param_2;" (assignment_expression "local_1c = param_2" (identifier "local_1c") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);" (assignment_expression "uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5)" (identifier "uVar5") (= "=") (call_expression "(*(code *)PTR_mmalloca_000758dc)(uVar5)" (parenthesized_expression "(*(code *)PTR_mmalloca_000758dc)" (( "(") (pointer_expression "*(code *)PTR_mmalloca_000758dc" (* "*") (cast_expression "(code *)PTR_mmalloca_000758dc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_mmalloca_000758dc"))) () ")")) (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")")))) (; ";")) (expression_statement "param_2 = local_1c;" (assignment_expression "param_2 = local_1c" (identifier "param_2") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar36 = auStack_38;" (assignment_expression "puVar36 = auStack_38" (identifier "puVar36") (= "=") (identifier "auStack_38")) (; ";")) (if_statement "if (uVar5 == 0) goto LAB_0002d620;" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002d620;" (goto "goto") (statement_identifier "LAB_0002d620") (; ";"))) (} "}")))) (expression_statement "puVar34 = puVar36;" (assignment_expression "puVar34 = puVar36" (identifier "puVar34") (= "=") (identifier "puVar36")) (; ";")) (expression_statement "*(undefined4 *)(uVar5 + 4) = 1;" (assignment_expression "*(undefined4 *)(uVar5 + 4) = 1" (pointer_expression "*(undefined4 *)(uVar5 + 4)" (* "*") (cast_expression "(undefined4 *)(uVar5 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 4)" (( "(") (binary_expression "uVar5 + 4" (identifier "uVar5") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "1")) (; ";")) (if_statement "if (2 < param_3) {\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }" (if "if") (parenthesized_expression "(2 < param_3)" (( "(") (binary_expression "2 < param_3" (number_literal "2") (< "<") (identifier "param_3")) () ")")) (compound_statement "{\n      puVar27 = (uint *)(uVar5 + 8);\n      iVar15 = 0;\n      uVar7 = 2;\n      do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);\n    }" ({ "{") (expression_statement "puVar27 = (uint *)(uVar5 + 8);" (assignment_expression "puVar27 = (uint *)(uVar5 + 8)" (identifier "puVar27") (= "=") (cast_expression "(uint *)(uVar5 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + 8)" (( "(") (binary_expression "uVar5 + 8" (identifier "uVar5") (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 2;" (assignment_expression "uVar7 = 2" (identifier "uVar7") (= "=") (number_literal "2")) (; ";")) (do_statement "do {\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      } while (param_3 != uVar7);" (do "do") (compound_statement "{\n        cVar14 = *(char *)(param_2 + iVar15);\n        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }\n        iVar15 = iVar15 + 1;\n        *puVar27 = uVar7 - iVar15;\nLAB_0002d564:\n        uVar7 = uVar7 + 1;\n        puVar27 = puVar27 + 1;\n      }" ({ "{") (expression_statement "cVar14 = *(char *)(param_2 + iVar15);" (assignment_expression "cVar14 = *(char *)(param_2 + iVar15)" (identifier "cVar14") (= "=") (pointer_expression "*(char *)(param_2 + iVar15)" (* "*") (cast_expression "(char *)(param_2 + iVar15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar15)" (( "(") (binary_expression "param_2 + iVar15" (identifier "param_2") (+ "+") (identifier "iVar15")) () ")"))))) (; ";")) (while_statement "while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }" (while "while") (parenthesized_expression "(cVar14 != *(char *)(param_2 + uVar7 + -1))" (( "(") (binary_expression "cVar14 != *(char *)(param_2 + uVar7 + -1)" (identifier "cVar14") (!= "!=") (pointer_expression "*(char *)(param_2 + uVar7 + -1)" (* "*") (cast_expression "(char *)(param_2 + uVar7 + -1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + uVar7 + -1)" (( "(") (binary_expression "param_2 + uVar7 + -1" (binary_expression "param_2 + uVar7" (identifier "param_2") (+ "+") (identifier "uVar7")) (+ "+") (number_literal "-1")) () ")"))))) () ")")) (compound_statement "{\n          if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }\n          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);\n          cVar14 = *(char *)(param_2 + iVar15);\n        }" ({ "{") (if_statement "if (iVar15 == 0) {\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }" (if "if") (parenthesized_expression "(iVar15 == 0)" (( "(") (binary_expression "iVar15 == 0" (identifier "iVar15") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar15 = 0;\n            *puVar27 = uVar7;\n            goto LAB_0002d564;\n          }" ({ "{") (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" (identifier "iVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar27 = uVar7;" (assignment_expression "*puVar27 = uVar7" (pointer_expression "*puVar27" (* "*") (identifier "puVar27")) (= "=") (identifier "uVar7")) (; ";")) (goto_statement "goto LAB_0002d564;" (goto "goto") (statement_identifier "LAB_0002d564") (; ";")) (} "}"))) (expression_statement "iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);" (assignment_expression "iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4)" (identifier "iVar15") (= "=") (binary_expression "iVar15 - *(int *)(uVar5 + iVar15 * 4)" (identifier "iVar15") (- "-") (pointer_expression "*(int *)(uVar5 + iVar15 * 4)" (* "*") (cast_expression "(int *)(uVar5 + iVar15 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + iVar15 * 4)" (( "(") (binary_expression "uVar5 + iVar15 * 4" (identifier "uVar5") (+ "+") (binary_expression "iVar15 * 4" (identifier "iVar15") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "cVar14 = *(char *)(param_2 + iVar15);" (assignment_expression "cVar14 = *(char *)(param_2 + iVar15)" (identifier "cVar14") (= "=") (pointer_expression "*(char *)(param_2 + iVar15)" (* "*") (cast_expression "(char *)(param_2 + iVar15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + iVar15)" (( "(") (binary_expression "param_2 + iVar15" (identifier "param_2") (+ "+") (identifier "iVar15")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" (identifier "iVar15") (= "=") (binary_expression "iVar15 + 1" (identifier "iVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar27 = uVar7 - iVar15;" (assignment_expression "*puVar27 = uVar7 - iVar15" (pointer_expression "*puVar27" (* "*") (identifier "puVar27")) (= "=") (binary_expression "uVar7 - iVar15" (identifier "uVar7") (- "-") (identifier "iVar15"))) (; ";")) (labeled_statement "LAB_0002d564:\n        uVar7 = uVar7 + 1;" (statement_identifier "LAB_0002d564") (: ":") (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar27 = puVar27 + 1;" (assignment_expression "puVar27 = puVar27 + 1" (identifier "puVar27") (= "=") (binary_expression "puVar27 + 1" (identifier "puVar27") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != uVar7)" (( "(") (binary_expression "param_3 != uVar7" (identifier "param_3") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (} "}"))) (expression_statement "*param_4 = 0;" (assignment_expression "*param_4 = 0" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar20 = *param_1;" (assignment_expression "bVar20 = *param_1" (identifier "bVar20") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pbVar6 = param_1;" (assignment_expression "pbVar6 = param_1" (identifier "pbVar6") (= "=") (identifier "param_1")) (; ";")) (labeled_statement "LAB_0002d580:\n    if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" (statement_identifier "LAB_0002d580") (: ":") (if_statement "if (bVar20 != 0) {\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" (if "if") (parenthesized_expression "(bVar20 != 0)" (( "(") (binary_expression "bVar20 != 0" (identifier "bVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }\n      uVar7 = uVar7 + 1;\n      if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }\n      bVar20 = pbVar6[1];\n      pbVar6 = pbVar6 + 1;\n      goto LAB_0002d580;\n    }" ({ "{") (while_statement "while (*(byte *)(param_2 + uVar7) != bVar20) {\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }" (while "while") (parenthesized_expression "(*(byte *)(param_2 + uVar7) != bVar20)" (( "(") (binary_expression "*(byte *)(param_2 + uVar7) != bVar20" (pointer_expression "*(byte *)(param_2 + uVar7)" (* "*") (cast_expression "(byte *)(param_2 + uVar7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + uVar7)" (( "(") (binary_expression "param_2 + uVar7" (identifier "param_2") (+ "+") (identifier "uVar7")) () ")")))) (!= "!=") (identifier "bVar20")) () ")")) (compound_statement "{\n        if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }\n        iVar15 = *(int *)(uVar5 + uVar7 * 4);\n        param_1 = param_1 + iVar15;\n        uVar7 = uVar7 - iVar15;\n        if (bVar20 == 0) goto LAB_0002d5b8;\n      }" ({ "{") (if_statement "if (uVar7 == 0) {\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          bVar20 = pbVar6[1];\n          param_1 = param_1 + 1;\n          pbVar6 = pbVar6 + 1;\n          goto LAB_0002d580;\n        }" ({ "{") (expression_statement "bVar20 = pbVar6[1];" (assignment_expression "bVar20 = pbVar6[1]" (identifier "bVar20") (= "=") (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0002d580;" (goto "goto") (statement_identifier "LAB_0002d580") (; ";")) (} "}"))) (expression_statement "iVar15 = *(int *)(uVar5 + uVar7 * 4);" (assignment_expression "iVar15 = *(int *)(uVar5 + uVar7 * 4)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(uVar5 + uVar7 * 4)" (* "*") (cast_expression "(int *)(uVar5 + uVar7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar5 + uVar7 * 4)" (( "(") (binary_expression "uVar5 + uVar7 * 4" (identifier "uVar5") (+ "+") (binary_expression "uVar7 * 4" (identifier "uVar7") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "param_1 = param_1 + iVar15;" (assignment_expression "param_1 = param_1 + iVar15" (identifier "param_1") (= "=") (binary_expression "param_1 + iVar15" (identifier "param_1") (+ "+") (identifier "iVar15"))) (; ";")) (expression_statement "uVar7 = uVar7 - iVar15;" (assignment_expression "uVar7 = uVar7 - iVar15" (identifier "uVar7") (= "=") (binary_expression "uVar7 - iVar15" (identifier "uVar7") (- "-") (identifier "iVar15"))) (; ";")) (if_statement "if (bVar20 == 0) goto LAB_0002d5b8;" (if "if") (parenthesized_expression "(bVar20 == 0)" (( "(") (binary_expression "bVar20 == 0" (identifier "bVar20") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002d5b8;" (goto "goto") (statement_identifier "LAB_0002d5b8") (; ";"))) (} "}"))) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_3 == uVar7) {\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }" (if "if") (parenthesized_expression "(param_3 == uVar7)" (( "(") (binary_expression "param_3 == uVar7" (identifier "param_3") (== "==") (identifier "uVar7")) () ")")) (compound_statement "{\n        *param_4 = param_1;\n        goto LAB_0002d5b8;\n      }" ({ "{") (expression_statement "*param_4 = param_1;" (assignment_expression "*param_4 = param_1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "param_1")) (; ";")) (goto_statement "goto LAB_0002d5b8;" (goto "goto") (statement_identifier "LAB_0002d5b8") (; ";")) (} "}"))) (expression_statement "bVar20 = pbVar6[1];" (assignment_expression "bVar20 = pbVar6[1]" (identifier "bVar20") (= "=") (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0002d580;" (goto "goto") (statement_identifier "LAB_0002d580") (; ";")) (} "}")))) (labeled_statement "LAB_0002d5b8:\n    (*(code *)PTR_freea_000758e0)();" (statement_identifier "LAB_0002d5b8") (: ":") (expression_statement "(*(code *)PTR_freea_000758e0)();" (call_expression "(*(code *)PTR_freea_000758e0)()" (parenthesized_expression "(*(code *)PTR_freea_000758e0)" (( "(") (pointer_expression "*(code *)PTR_freea_000758e0" (* "*") (cast_expression "(code *)PTR_freea_000758e0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_freea_000758e0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "pbVar6 = (byte *)0x1;" (assignment_expression "pbVar6 = (byte *)0x1" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (} "}")))) (labeled_statement "LAB_0002d5c8:\n  if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }" (statement_identifier "LAB_0002d5c8") (: ":") (if_statement "if (local_14 == *(int *)pbVar28) {\n    return pbVar6;\n  }" (if "if") (parenthesized_expression "(local_14 == *(int *)pbVar28)" (( "(") (binary_expression "local_14 == *(int *)pbVar28" (identifier "local_14") (== "==") (pointer_expression "*(int *)pbVar28" (* "*") (cast_expression "(int *)pbVar28" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar28")))) () ")")) (compound_statement "{\n    return pbVar6;\n  }" ({ "{") (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}")))) (expression_statement "pcVar40 = FUN_0002d670;" (assignment_expression "pcVar40 = FUN_0002d670" (identifier "pcVar40") (= "=") (identifier "FUN_0002d670")) (; ";")) (expression_statement "puVar32 = PTR___stack_chk_fail_00075ba8;" (assignment_expression "puVar32 = PTR___stack_chk_fail_00075ba8" (identifier "puVar32") (= "=") (identifier "PTR___stack_chk_fail_00075ba8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_00075ba8)();" (call_expression "(*(code *)PTR___stack_chk_fail_00075ba8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00075ba8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00075ba8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00075ba8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00075ba8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar24 = &DAT_000000b3;" (assignment_expression "pbVar24 = &DAT_000000b3" (identifier "pbVar24") (= "=") (pointer_expression "&DAT_000000b3" (& "&") (identifier "DAT_000000b3"))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar32 + 0x47f48);" (assignment_expression "iVar15 = *(int *)(puVar32 + 0x47f48)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar32 + 0x47f48)" (* "*") (cast_expression "(int *)(puVar32 + 0x47f48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + 0x47f48)" (( "(") (binary_expression "puVar32 + 0x47f48" (identifier "puVar32") (+ "+") (number_literal "0x47f48")) () ")"))))) (; ";")) (expression_statement "pcVar33 = *(code **)(puVar32 + 0x48360);" (assignment_expression "pcVar33 = *(code **)(puVar32 + 0x48360)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(puVar32 + 0x48360)" (* "*") (cast_expression "(code **)(puVar32 + 0x48360)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar32 + 0x48360)" (( "(") (binary_expression "puVar32 + 0x48360" (identifier "puVar32") (+ "+") (number_literal "0x48360")) () ")"))))) (; ";")) (expression_statement "pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);" (assignment_expression "pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120)" (identifier "pbVar23") (= "=") (cast_expression "(byte *)(*(int *)(puVar32 + 0x47f48) + -0x120)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar32 + 0x47f48) + -0x120)" (( "(") (binary_expression "*(int *)(puVar32 + 0x47f48) + -0x120" (pointer_expression "*(int *)(puVar32 + 0x47f48)" (* "*") (cast_expression "(int *)(puVar32 + 0x47f48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar32 + 0x47f48)" (( "(") (binary_expression "puVar32 + 0x47f48" (identifier "puVar32") (+ "+") (number_literal "0x47f48")) () ")")))) (+ "+") (number_literal "-0x120")) () ")")))) (; ";")) (expression_statement "*(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;" (assignment_expression "*(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10" (pointer_expression "*(undefined **)(puVar34 + -0x10)" (* "*") (cast_expression "(undefined **)(puVar34 + -0x10)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x10)" (( "(") (binary_expression "puVar34 + -0x10" (identifier "puVar34") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (binary_expression "puVar32 + 0x4ff10" (identifier "puVar32") (+ "+") (number_literal "0x4ff10"))) (; ";")) (expression_statement "*(code **)(puVar34 + -4) = pcVar40;" (assignment_expression "*(code **)(puVar34 + -4) = pcVar40" (pointer_expression "*(code **)(puVar34 + -4)" (* "*") (cast_expression "(code **)(puVar34 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -4)" (( "(") (binary_expression "puVar34 + -4" (identifier "puVar34") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar40")) (; ";")) (expression_statement "uVar41 = 0x2d6ac;" (assignment_expression "uVar41 = 0x2d6ac" (identifier "uVar41") (= "=") (number_literal "0x2d6ac")) (; ";")) (expression_statement "iVar15 = iVar15 + -0x114;" (assignment_expression "iVar15 = iVar15 + -0x114" (identifier "iVar15") (= "=") (binary_expression "iVar15 + -0x114" (identifier "iVar15") (+ "+") (number_literal "-0x114"))) (; ";")) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar35 = puVar34 + -0x128;" (assignment_expression "puVar35 = puVar34 + -0x128" (identifier "puVar35") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (expression_statement "puVar38 = puVar34 + -0x128;" (assignment_expression "puVar38 = puVar34 + -0x128" (identifier "puVar38") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (expression_statement "puVar39 = puVar34 + -0x128;" (assignment_expression "puVar39 = puVar34 + -0x128" (identifier "puVar39") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" (identifier "puVar37") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x4853c)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(pcVar33 + 0x4853c)" (* "*") (cast_expression "(undefined4 **)(pcVar33 + 0x4853c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x4853c)" (( "(") (binary_expression "pcVar33 + 0x4853c" (identifier "pcVar33") (+ "+") (number_literal "0x4853c")) () ")"))))) (; ";")) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x48238);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x48238)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(pcVar33 + 0x48238)" (* "*") (cast_expression "(code **)(pcVar33 + 0x48238)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x48238)" (( "(") (binary_expression "pcVar33 + 0x48238" (identifier "pcVar33") (+ "+") (number_literal "0x48238")) () ")"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar34 + -0x28) = auStack_38;" (assignment_expression "*(undefined1 **)(puVar34 + -0x28) = auStack_38" (pointer_expression "*(undefined1 **)(puVar34 + -0x28)" (* "*") (cast_expression "(undefined1 **)(puVar34 + -0x28)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x28)" (( "(") (binary_expression "puVar34 + -0x28" (identifier "puVar34") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "auStack_38")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x2c) = unaff_s7;" (assignment_expression "*(undefined4 *)(puVar34 + -0x2c) = unaff_s7" (pointer_expression "*(undefined4 *)(puVar34 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x2c)" (( "(") (binary_expression "puVar34 + -0x2c" (identifier "puVar34") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (identifier "unaff_s7")) (; ";")) (expression_statement "*(undefined4 **)(puVar34 + -0x10c) = puVar8;" (assignment_expression "*(undefined4 **)(puVar34 + -0x10c) = puVar8" (pointer_expression "*(undefined4 **)(puVar34 + -0x10c)" (* "*") (cast_expression "(undefined4 **)(puVar34 + -0x10c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x10c)" (( "(") (binary_expression "puVar34 + -0x10c" (identifier "puVar34") (+ "+") (number_literal "-0x10c")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;" (assignment_expression "*(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4" (pointer_expression "*(code **)(puVar34 + -0x118)" (* "*") (cast_expression "(code **)(puVar34 + -0x118)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")")))) (= "=") (binary_expression "pcVar33 + 0x4fed4" (identifier "pcVar33") (+ "+") (number_literal "0x4fed4"))) (; ";")) (expression_statement "*(int *)(puVar34 + -0x108) = iVar15;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar15" (pointer_expression "*(int *)(puVar34 + -0x108)" (* "*") (cast_expression "(int *)(puVar34 + -0x108)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")")))) (= "=") (identifier "iVar15")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x24) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x24) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x24)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x24)" (( "(") (binary_expression "puVar34 + -0x24" (identifier "puVar34") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x30) = unaff_s6;" (assignment_expression "*(byte **)(puVar34 + -0x30) = unaff_s6" (pointer_expression "*(byte **)(puVar34 + -0x30)" (* "*") (cast_expression "(byte **)(puVar34 + -0x30)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x30)" (( "(") (binary_expression "puVar34 + -0x30" (identifier "puVar34") (+ "+") (number_literal "-0x30")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x34) = unaff_s5;" (assignment_expression "*(byte **)(puVar34 + -0x34) = unaff_s5" (pointer_expression "*(byte **)(puVar34 + -0x34)" (* "*") (cast_expression "(byte **)(puVar34 + -0x34)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x34)" (( "(") (binary_expression "puVar34 + -0x34" (identifier "puVar34") (+ "+") (number_literal "-0x34")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x38) = unaff_s4;" (assignment_expression "*(byte **)(puVar34 + -0x38) = unaff_s4" (pointer_expression "*(byte **)(puVar34 + -0x38)" (* "*") (cast_expression "(byte **)(puVar34 + -0x38)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x38)" (( "(") (binary_expression "puVar34 + -0x38" (identifier "puVar34") (+ "+") (number_literal "-0x38")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(undefined1 **)(puVar34 + -0x3c) = unaff_s3;" (assignment_expression "*(undefined1 **)(puVar34 + -0x3c) = unaff_s3" (pointer_expression "*(undefined1 **)(puVar34 + -0x3c)" (* "*") (cast_expression "(undefined1 **)(puVar34 + -0x3c)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x3c)" (( "(") (binary_expression "puVar34 + -0x3c" (identifier "puVar34") (+ "+") (number_literal "-0x3c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(int *)(puVar34 + -0x40) = unaff_s2;" (assignment_expression "*(int *)(puVar34 + -0x40) = unaff_s2" (pointer_expression "*(int *)(puVar34 + -0x40)" (* "*") (cast_expression "(int *)(puVar34 + -0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x40)" (( "(") (binary_expression "puVar34 + -0x40" (identifier "puVar34") (+ "+") (number_literal "-0x40")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x44) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0x44) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0x44)" (* "*") (cast_expression "(byte **)(puVar34 + -0x44)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x44)" (( "(") (binary_expression "puVar34 + -0x44" (identifier "puVar34") (+ "+") (number_literal "-0x44")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x48) = param_1;" (assignment_expression "*(byte **)(puVar34 + -0x48) = param_1" (pointer_expression "*(byte **)(puVar34 + -0x48)" (* "*") (cast_expression "(byte **)(puVar34 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x48)" (( "(") (binary_expression "puVar34 + -0x48" (identifier "puVar34") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x110) = pbVar24;" (assignment_expression "*(byte **)(puVar34 + -0x110) = pbVar24" (pointer_expression "*(byte **)(puVar34 + -0x110)" (* "*") (cast_expression "(byte **)(puVar34 + -0x110)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x110)" (( "(") (binary_expression "puVar34 + -0x110" (identifier "puVar34") (+ "+") (number_literal "-0x110")) () ")")))) (= "=") (identifier "pbVar24")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x4c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar34 + -0x4c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar34 + -0x4c)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x4c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x4c)" (( "(") (binary_expression "puVar34 + -0x4c" (identifier "puVar34") (+ "+") (number_literal "-0x4c")) () ")")))) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" (identifier "pbVar6") (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "uVar5 = (*pcVar40)(pbVar23);" (assignment_expression "uVar5 = (*pcVar40)(pbVar23)" (identifier "uVar5") (= "=") (call_expression "(*pcVar40)(pbVar23)" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "(pbVar23)" (( "(") (identifier "pbVar23") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);" (assignment_expression "pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20)" (identifier "pbVar43") (= "=") (cast_expression "(byte *)((ulonglong)uVar5 * 0x2c >> 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar5 * 0x2c >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar5 * 0x2c >> 0x20" (binary_expression "(ulonglong)uVar5 * 0x2c" (cast_expression "(ulonglong)uVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar5")) (* "*") (number_literal "0x2c")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "*(uint *)(puVar34 + -0x104) = uVar5;" (assignment_expression "*(uint *)(puVar34 + -0x104) = uVar5" (pointer_expression "*(uint *)(puVar34 + -0x104)" (* "*") (cast_expression "(uint *)(puVar34 + -0x104)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x104)" (( "(") (binary_expression "puVar34 + -0x104" (identifier "puVar34") (+ "+") (number_literal "-0x104")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar36 = puVar34 + -0x128;" (assignment_expression "puVar36 = puVar34 + -0x128" (identifier "puVar36") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (if_statement "if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }" (if "if") (parenthesized_expression "((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0))" (( "(") (binary_expression "(-1 < (int)((ulonglong)uVar5 * 0x2c)) &&\n     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)" (parenthesized_expression "(-1 < (int)((ulonglong)uVar5 * 0x2c))" (( "(") (binary_expression "-1 < (int)((ulonglong)uVar5 * 0x2c)" (number_literal "-1") (< "<") (cast_expression "(int)((ulonglong)uVar5 * 0x2c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar5 * 0x2c)" (( "(") (binary_expression "(ulonglong)uVar5 * 0x2c" (cast_expression "(ulonglong)uVar5" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar5")) (* "*") (number_literal "0x2c")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)" (( "(") (comma_expression "pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0" (assignment_expression "pbVar24 = pbVar43" (identifier "pbVar24") (= "=") (identifier "pbVar43")) (, ",") (comma_expression "puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0" (assignment_expression "puVar36 = puVar34 + -0x128" (identifier "puVar36") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (, ",") (binary_expression "pbVar43 == (byte *)0x0" (identifier "pbVar43") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))))) () ")"))) () ")")) (compound_statement "{\n    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }\n    pbVar24 = pbVar43;\n    puVar36 = puVar35;\n    if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }\n  }" ({ "{") (if_statement "if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }\n    else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" (if "if") (parenthesized_expression "((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1)" (( "(") (binary_expression "(uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1" (call_expression "(uint)(*(int *)(puVar34 + -0x104) * 0x2c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(puVar34 + -0x104) * 0x2c)" (( "(") (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar34 + -0x104)" (* "*") (cast_expression "(int *)(puVar34 + -0x104)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x104)" (( "(") (binary_expression "puVar34 + -0x104" (identifier "puVar34") (+ "+") (number_literal "-0x104")) () ")")))) (* "*") (number_literal "0x2c")) () ")"))) (< "<") (number_literal "0xfb1")) () ")")) (compound_statement "{\n      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);\n      puVar35 = puVar34 + iVar9 + -0x128;\n      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);\n    }" ({ "{") (expression_statement "iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);" (assignment_expression "iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" (identifier "iVar9") (= "=") (unary_expression "-(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" (- "-") (parenthesized_expression "(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8)" (( "(") (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8" (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c + 0x16U" (binary_expression "*(int *)(puVar34 + -0x104) * 0x2c" (pointer_expression "*(int *)(puVar34 + -0x104)" (* "*") (cast_expression "(int *)(puVar34 + -0x104)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x104)" (( "(") (binary_expression "puVar34 + -0x104" (identifier "puVar34") (+ "+") (number_literal "-0x104")) () ")")))) (* "*") (number_literal "0x2c")) (+ "+") (number_literal "0x16U")) (& "&") (number_literal "0xfffffff8")) () ")")))) (; ";")) (expression_statement "puVar35 = puVar34 + iVar9 + -0x128;" (assignment_expression "puVar35 = puVar34 + iVar9 + -0x128" (identifier "puVar35") (= "=") (binary_expression "puVar34 + iVar9 + -0x128" (binary_expression "puVar34 + iVar9" (identifier "puVar34") (+ "+") (identifier "iVar9")) (+ "+") (number_literal "-0x128"))) (; ";")) (expression_statement "param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);" (assignment_expression "param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" (identifier "param_1") (= "=") (cast_expression "(byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0)" (( "(") (binary_expression "(uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0" (call_expression "(uint)(puVar34 + iVar9 + -0x109)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar34 + iVar9 + -0x109)" (( "(") (binary_expression "puVar34 + iVar9 + -0x109" (binary_expression "puVar34 + iVar9" (identifier "puVar34") (+ "+") (identifier "iVar9")) (+ "+") (number_literal "-0x109")) () ")"))) (& "&") (number_literal "0xfffffff0")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" (else "else") (compound_statement "{\n      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();\n      iVar15 = *(int *)(puVar34 + -0x118);\n    }" ({ "{") (expression_statement "param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();" (assignment_expression "param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))()" (identifier "param_1") (= "=") (cast_expression "(byte *)(**(code **)(iVar15 + -0x7ca4))()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(iVar15 + -0x7ca4))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7ca4))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7ca4)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7ca4)" (* "*") (cast_expression "(code **)(iVar15 + -0x7ca4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7ca4)" (( "(") (binary_expression "iVar15 + -0x7ca4" (identifier "iVar15") (+ "+") (number_literal "-0x7ca4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pbVar24 = pbVar43;" (assignment_expression "pbVar24 = pbVar43" (identifier "pbVar24") (= "=") (identifier "pbVar43")) (; ";")) (expression_statement "puVar36 = puVar35;" (assignment_expression "puVar36 = puVar35" (identifier "puVar36") (= "=") (identifier "puVar35")) (; ";")) (if_statement "if (param_1 != (byte *)0x0) {\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(param_1 != (byte *)0x0)" (( "(") (binary_expression "param_1 != (byte *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      unaff_s3 = puVar34 + -0xf0;\n      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n      *(undefined4 *)(puVar34 + -0xf0) = 0;\n      unaff_s2 = 1;\n      *(undefined4 *)(puVar34 + -0xec) = 0;\n      *(undefined4 *)(puVar34 + -0x100) = uVar41;\n      unaff_s6 = puVar34 + -0xd8;\n      *(byte **)(puVar34 + -0xe4) = pbVar23;\n      puVar34[-0xf4] = 0;\n      unaff_s5 = puVar34 + -0xd4;\n      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);\n      puVar34[-0xe8] = 0;\n      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;\n      unaff_s4 = param_1;\n      do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );\n    }" ({ "{") (expression_statement "unaff_s3 = puVar34 + -0xf0;" (assignment_expression "unaff_s3 = puVar34 + -0xf0" (identifier "unaff_s3") (= "=") (binary_expression "puVar34 + -0xf0" (identifier "puVar34") (+ "+") (number_literal "-0xf0"))) (; ";")) (expression_statement "uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" (assignment_expression "uVar41 = *(undefined4 *)(iVar15 + -0x7c98)" (identifier "uVar41") (= "=") (pointer_expression "*(undefined4 *)(iVar15 + -0x7c98)" (* "*") (cast_expression "(undefined4 *)(iVar15 + -0x7c98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7c98)" (( "(") (binary_expression "iVar15 + -0x7c98" (identifier "iVar15") (+ "+") (number_literal "-0x7c98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xf0)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xf0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xf0)" (( "(") (binary_expression "puVar34 + -0xf0" (identifier "puVar34") (+ "+") (number_literal "-0xf0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s2 = 1;" (assignment_expression "unaff_s2 = 1" (identifier "unaff_s2") (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xec) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xec) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xec)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xec)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xec)" (( "(") (binary_expression "puVar34 + -0xec" (identifier "puVar34") (+ "+") (number_literal "-0xec")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x100) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x100) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x100)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x100)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x100)" (( "(") (binary_expression "puVar34 + -0x100" (identifier "puVar34") (+ "+") (number_literal "-0x100")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "unaff_s6 = puVar34 + -0xd8;" (assignment_expression "unaff_s6 = puVar34 + -0xd8" (identifier "unaff_s6") (= "=") (binary_expression "puVar34 + -0xd8" (identifier "puVar34") (+ "+") (number_literal "-0xd8"))) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xe4) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0xe4) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0xe4)" (* "*") (cast_expression "(byte **)(puVar34 + -0xe4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xe4)" (( "(") (binary_expression "puVar34 + -0xe4" (identifier "puVar34") (+ "+") (number_literal "-0xe4")) () ")")))) (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "puVar34[-0xf4] = 0;" (assignment_expression "puVar34[-0xf4] = 0" (subscript_expression "puVar34[-0xf4]" (identifier "puVar34") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s5 = puVar34 + -0xd4;" (assignment_expression "unaff_s5 = puVar34 + -0xd4" (identifier "unaff_s5") (= "=") (binary_expression "puVar34 + -0xd4" (identifier "puVar34") (+ "+") (number_literal "-0xd4"))) (; ";")) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28)" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(*(int *)(puVar34 + -0x104) * 0x28)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0x104) * 0x28)" (( "(") (binary_expression "*(int *)(puVar34 + -0x104) * 0x28" (pointer_expression "*(int *)(puVar34 + -0x104)" (* "*") (cast_expression "(int *)(puVar34 + -0x104)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x104)" (( "(") (binary_expression "puVar34 + -0x104" (identifier "puVar34") (+ "+") (number_literal "-0x104")) () ")")))) (* "*") (number_literal "0x28")) () ")")))) (; ";")) (expression_statement "puVar34[-0xe8] = 0;" (assignment_expression "puVar34[-0xe8] = 0" (subscript_expression "puVar34[-0xe8]" (identifier "puVar34") ([ "[") (number_literal "-0xe8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xfc)" (* "*") (cast_expression "(byte **)(puVar34 + -0xfc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")")))) (= "=") (binary_expression "param_1 + (int)pbVar28" (identifier "param_1") (+ "+") (cast_expression "(int)pbVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar28")))) (; ";")) (expression_statement "unaff_s4 = param_1;" (assignment_expression "unaff_s4 = param_1" (identifier "unaff_s4") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      } while( true );" (do "do") (compound_statement "{\n        if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }\n        pbVar43 = *(byte **)(puVar34 + -0xe0);\n        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }\n        *(byte **)(unaff_s4 + 4) = pbVar43;\n        unaff_s4[8] = bVar20;\n        if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }\n        unaff_s4 = unaff_s4 + 0x28;\n        puVar34[-0xe8] = 0;\n        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);\n        *(byte **)(puVar34 + -0xe4) = pbVar23;\n      }" ({ "{") (if_statement "if (puVar34[-0xf4] == '\0') {\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }\n        else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" (if "if") (parenthesized_expression "(puVar34[-0xf4] == '\0')" (( "(") (binary_expression "puVar34[-0xf4] == '\0'" (subscript_expression "puVar34[-0xf4]" (identifier "puVar34") ([ "[") (number_literal "-0xf4") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          pbVar6 = (byte *)(uint)*pbVar23;\n          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }\n          *(undefined4 *)(puVar34 + -0xe0) = 1;\n          pbVar28 = (byte *)(int)(char)*pbVar23;\n          puVar34[-0xdc] = 1;\n          puVar34[-0xe8] = 1;\n          *(byte **)(puVar34 + -0xd8) = pbVar28;\n          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;\nLAB_0002d7f8:\n          bVar20 = 1;\n        }" ({ "{") (expression_statement "pbVar6 = (byte *)(uint)*pbVar23;" (assignment_expression "pbVar6 = (byte *)(uint)*pbVar23" (identifier "pbVar6") (= "=") (binary_expression "(byte *)(uint)*pbVar23" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar23"))) (; ";")) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0) {\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>\n               ((uint)pbVar6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" (* "*") (cast_expression "(int *)(puVar34 + -0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x100)" (( "(") (binary_expression "puVar34 + -0x100" (identifier "puVar34") (+ "+") (number_literal "-0x100")) () ")")))) (+ "+") (binary_expression "(uint)(*pbVar23 >> 5) * 4" (call_expression "(uint)(*pbVar23 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar23 >> 5)" (( "(") (binary_expression "*pbVar23 >> 5" (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "((uint)pbVar6 & 0x1f)" (( "(") (binary_expression "(uint)pbVar6 & 0x1f" (cast_expression "(uint)pbVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar6")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }\n            goto LAB_0002e0bc;\n          }" ({ "{") (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s3)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(unaff_s3)" (( "(") (identifier "unaff_s3") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              puVar34[-0xf4] = 1;\n              goto LAB_0002d840;\n            }" ({ "{") (expression_statement "puVar34[-0xf4] = 1;" (assignment_expression "puVar34[-0xf4] = 1" (subscript_expression "puVar34[-0xf4]" (identifier "puVar34") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002d840;" (goto "goto") (statement_identifier "LAB_0002d840") (; ";")) (} "}"))) (goto_statement "goto LAB_0002e0bc;" (goto "goto") (statement_identifier "LAB_0002e0bc") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xe0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xe0)" (( "(") (binary_expression "puVar34 + -0xe0" (identifier "puVar34") (+ "+") (number_literal "-0xe0")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar23;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar23" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(int)(char)*pbVar23" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar23" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")))))) (; ";")) (expression_statement "puVar34[-0xdc] = 1;" (assignment_expression "puVar34[-0xdc] = 1" (subscript_expression "puVar34[-0xdc]" (identifier "puVar34") ([ "[") (number_literal "-0xdc") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" (identifier "puVar34") ([ "[") (number_literal "-0xe8") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xd8) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xd8) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xd8)" (* "*") (cast_expression "(byte **)(puVar34 + -0xd8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xd8)" (( "(") (binary_expression "puVar34 + -0xd8" (identifier "puVar34") (+ "+") (number_literal "-0xd8")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (if_statement "if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;" (if "if") (parenthesized_expression "(pbVar28 == (byte *)0x0)" (( "(") (binary_expression "pbVar28 == (byte *)0x0" (identifier "pbVar28") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002d8cc;" (goto "goto") (statement_identifier "LAB_0002d8cc") (; ";"))) (labeled_statement "LAB_0002d7f8:\n          bVar20 = 1;" (statement_identifier "LAB_0002d7f8") (: ":") (expression_statement "bVar20 = 1;" (assignment_expression "bVar20 = 1" (identifier "bVar20") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" (else "else") (compound_statement "{\nLAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);\n          pbVar6 = pbVar23;\n          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xe0) = iVar9;\n          if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n        }" ({ "{") (labeled_statement "LAB_0002d840:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();" (statement_identifier "LAB_0002d840") (: ":") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar43 = (byte *)strnlen1(pbVar23,uVar41);" (assignment_expression "pbVar43 = (byte *)strnlen1(pbVar23,uVar41)" (identifier "pbVar43") (= "=") (cast_expression "(byte *)strnlen1(pbVar23,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar23,uVar41)" (identifier "strnlen1") (argument_list "(pbVar23,uVar41)" (( "(") (identifier "pbVar23") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" (identifier "pbVar6") (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3)" (identifier "rpl_mbrtowc") (argument_list "(unaff_s6,pbVar23,pbVar43,unaff_s3)" (( "(") (identifier "unaff_s6") (, ",") (identifier "pbVar23") (, ",") (identifier "pbVar43") (, ",") (identifier "unaff_s3") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar34 + -0xe0) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xe0) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xe0)" (* "*") (cast_expression "(int *)(puVar34 + -0xe0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xe0)" (( "(") (binary_expression "puVar34 + -0xe0" (identifier "puVar34") (+ "+") (number_literal "-0xe0")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            *(undefined4 *)(puVar34 + -0xe0) = 1;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xe0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xe0)" (( "(") (binary_expression "puVar34 + -0xe0" (identifier "puVar34") (+ "+") (number_literal "-0xe0")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" (identifier "bVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0xdc] = 0;" (assignment_expression "puVar34[-0xdc] = 0" (subscript_expression "puVar34[-0xdc]" (identifier "puVar34") ([ "[") (number_literal "-0xdc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" (identifier "puVar34") ([ "[") (number_literal "-0xe8") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" (else "else") (compound_statement "{\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xe0) = uVar41;\n            bVar20 = 0;\n            puVar34[-0xdc] = 0;\n            puVar34[-0xe8] = 1;\n          }" ({ "{") (if_statement "if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }" (if "if") (parenthesized_expression "(iVar9 != -2)" (( "(") (binary_expression "iVar9 != -2" (identifier "iVar9") (!= "!=") (number_literal "-2")) () ")")) (compound_statement "{\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              pbVar23 = (byte *)0x1;\n              puVar34[-0xdc] = 1;\n              iVar9 = (*pcVar33)(unaff_s3);\n              iVar15 = *(int *)(puVar34 + -0x118);\n              if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }\n              puVar34[-0xe8] = 1;\n              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;\n              goto LAB_0002d8cc;\n            }" ({ "{") (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }\n              else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined4 *)(puVar34 + -0xe0) = 1;\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;\n                if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xe0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xe0)" (( "(") (binary_expression "puVar34 + -0xe0" (identifier "puVar34") (+ "+") (number_literal "-0xe0")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xd8);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xd8)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xd8)" (* "*") (cast_expression "(byte **)(puVar34 + -0xd8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xd8)" (( "(") (binary_expression "puVar34 + -0xd8" (identifier "puVar34") (+ "+") (number_literal "-0xd8")) () ")"))))) (; ";")) (if_statement "if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;" (if "if") (parenthesized_expression "(**(char **)(puVar34 + -0xe4) != '\0')" (( "(") (binary_expression "**(char **)(puVar34 + -0xe4) != '\0'" (pointer_expression "**(char **)(puVar34 + -0xe4)" (* "*") (pointer_expression "*(char **)(puVar34 + -0xe4)" (* "*") (cast_expression "(char **)(puVar34 + -0xe4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xe4)" (( "(") (binary_expression "puVar34 + -0xe4" (identifier "puVar34") (+ "+") (number_literal "-0xe4")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002e098;" (goto "goto") (statement_identifier "LAB_0002e098") (; ";"))) (if_statement "if (pbVar28 != (byte *)0x0) {\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }" (if "if") (parenthesized_expression "(pbVar28 != (byte *)0x0)" (( "(") (binary_expression "pbVar28 != (byte *)0x0" (identifier "pbVar28") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n                  goto LAB_0002dc58;\n                }" ({ "{") (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" (identifier "pcVar33") (= "=") (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" (( "(") (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" (* "*") (cast_expression "(int *)(iVar15 + -32000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -32000)" (( "(") (binary_expression "iVar15 + -32000" (identifier "iVar15") (+ "+") (number_literal "-32000")) () ")")))) (+ "+") (number_literal "-0x2990")) () ")")))) (; ";")) (goto_statement "goto LAB_0002dc58;" (goto "goto") (statement_identifier "LAB_0002dc58") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" (else "else") (compound_statement "{\n                pbVar28 = *(byte **)(puVar34 + -0xd8);\n              }" ({ "{") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xd8);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xd8)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xd8)" (* "*") (cast_expression "(byte **)(puVar34 + -0xd8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xd8)" (( "(") (binary_expression "puVar34 + -0xd8" (identifier "puVar34") (+ "+") (number_literal "-0xd8")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" (identifier "pbVar23") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar34[-0xdc] = 1;" (assignment_expression "puVar34[-0xdc] = 1" (subscript_expression "puVar34[-0xdc]" (identifier "puVar34") ([ "[") (number_literal "-0xdc") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(unaff_s3);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s3)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s3)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s3)" (( "(") (identifier "unaff_s3") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n                puVar34[-0xf4] = 0;\n              }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                puVar34[-0xf4] = 0;\n              }" ({ "{") (expression_statement "puVar34[-0xf4] = 0;" (assignment_expression "puVar34[-0xf4] = 0" (subscript_expression "puVar34[-0xf4]" (identifier "puVar34") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" (identifier "puVar34") ([ "[") (number_literal "-0xe8") (] "]")) (= "=") (number_literal "1")) (; ";")) (if_statement "if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;" (if "if") (parenthesized_expression "(pbVar28 != (byte *)0x0)" (( "(") (binary_expression "pbVar28 != (byte *)0x0" (identifier "pbVar28") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002d7f8;" (goto "goto") (statement_identifier "LAB_0002d7f8") (; ";"))) (goto_statement "goto LAB_0002d8cc;" (goto "goto") (statement_identifier "LAB_0002d8cc") (; ";")) (} "}"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4))" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar34 + -0xe4))" (( "(") (pointer_expression "*(undefined4 *)(puVar34 + -0xe4)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xe4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xe4)" (( "(") (binary_expression "puVar34 + -0xe4" (identifier "puVar34") (+ "+") (number_literal "-0xe4")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xe0) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xe0) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xe0)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xe0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xe0)" (( "(") (binary_expression "puVar34 + -0xe0" (identifier "puVar34") (+ "+") (number_literal "-0xe0")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" (identifier "bVar20") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0xdc] = 0;" (assignment_expression "puVar34[-0xdc] = 0" (subscript_expression "puVar34[-0xdc]" (identifier "puVar34") ([ "[") (number_literal "-0xdc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0xe8] = 1;" (assignment_expression "puVar34[-0xe8] = 1" (subscript_expression "puVar34[-0xe8]" (identifier "puVar34") ([ "[") (number_literal "-0xe8") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")))) (expression_statement "pbVar43 = *(byte **)(puVar34 + -0xe0);" (assignment_expression "pbVar43 = *(byte **)(puVar34 + -0xe0)" (identifier "pbVar43") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xe0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xe0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xe0)" (( "(") (binary_expression "puVar34 + -0xe0" (identifier "puVar34") (+ "+") (number_literal "-0xe0")) () ")"))))) (; ";")) (if_statement "if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }\n        else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" (if "if") (parenthesized_expression "(*(byte **)(puVar34 + -0xe4) == unaff_s5)" (( "(") (binary_expression "*(byte **)(puVar34 + -0xe4) == unaff_s5" (pointer_expression "*(byte **)(puVar34 + -0xe4)" (* "*") (cast_expression "(byte **)(puVar34 + -0xe4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xe4)" (( "(") (binary_expression "puVar34 + -0xe4" (identifier "puVar34") (+ "+") (number_literal "-0xe4")) () ")")))) (== "==") (identifier "unaff_s5")) () ")")) (compound_statement "{\n          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          bVar20 = puVar34[-0xdc];\n          pbVar43 = *(byte **)(puVar34 + -0xe0);\n          *(undefined4 *)unaff_s4 = uVar41;\n        }" ({ "{") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5)" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5)" (parenthesized_expression "(**(code **)(iVar15 + -0x7990))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7990)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7990)" (* "*") (cast_expression "(code **)(iVar15 + -0x7990)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7990)" (( "(") (binary_expression "iVar15 + -0x7990" (identifier "iVar15") (+ "+") (number_literal "-0x7990")) () ")"))))) () ")")) (argument_list "(unaff_s4 + 0x10,unaff_s5)" (( "(") (binary_expression "unaff_s4 + 0x10" (identifier "unaff_s4") (+ "+") (number_literal "0x10")) (, ",") (identifier "unaff_s5") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "bVar20 = puVar34[-0xdc];" (assignment_expression "bVar20 = puVar34[-0xdc]" (identifier "bVar20") (= "=") (subscript_expression "puVar34[-0xdc]" (identifier "puVar34") ([ "[") (number_literal "-0xdc") (] "]"))) (; ";")) (expression_statement "pbVar43 = *(byte **)(puVar34 + -0xe0);" (assignment_expression "pbVar43 = *(byte **)(puVar34 + -0xe0)" (identifier "pbVar43") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xe0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xe0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xe0)" (( "(") (binary_expression "puVar34 + -0xe0" (identifier "puVar34") (+ "+") (number_literal "-0xe0")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)unaff_s4 = uVar41;" (assignment_expression "*(undefined4 *)unaff_s4 = uVar41" (pointer_expression "*(undefined4 *)unaff_s4" (* "*") (cast_expression "(undefined4 *)unaff_s4" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s4"))) (= "=") (identifier "uVar41")) (; ";")) (} "}")) (else_clause "else {\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" (else "else") (compound_statement "{\n          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);\n        }" ({ "{") (expression_statement "*(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);" (assignment_expression "*(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4)" (pointer_expression "*(byte **)unaff_s4" (* "*") (cast_expression "(byte **)unaff_s4" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "unaff_s4"))) (= "=") (pointer_expression "*(byte **)(puVar34 + -0xe4)" (* "*") (cast_expression "(byte **)(puVar34 + -0xe4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xe4)" (( "(") (binary_expression "puVar34 + -0xe4" (identifier "puVar34") (+ "+") (number_literal "-0xe4")) () ")"))))) (; ";")) (} "}")))) (expression_statement "*(byte **)(unaff_s4 + 4) = pbVar43;" (assignment_expression "*(byte **)(unaff_s4 + 4) = pbVar43" (pointer_expression "*(byte **)(unaff_s4 + 4)" (* "*") (cast_expression "(byte **)(unaff_s4 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(unaff_s4 + 4)" (( "(") (binary_expression "unaff_s4 + 4" (identifier "unaff_s4") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "pbVar43")) (; ";")) (expression_statement "unaff_s4[8] = bVar20;" (assignment_expression "unaff_s4[8] = bVar20" (subscript_expression "unaff_s4[8]" (identifier "unaff_s4") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "bVar20")) (; ";")) (if_statement "if (bVar20 != 0) {\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }" (if "if") (parenthesized_expression "(bVar20 != 0)" (( "(") (binary_expression "bVar20 != 0" (identifier "bVar20") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);\n        }" ({ "{") (expression_statement "*(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);" (assignment_expression "*(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8)" (pointer_expression "*(undefined4 *)(unaff_s4 + 0xc)" (* "*") (cast_expression "(undefined4 *)(unaff_s4 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_s4 + 0xc)" (( "(") (binary_expression "unaff_s4 + 0xc" (identifier "unaff_s4") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(puVar34 + -0xd8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xd8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xd8)" (( "(") (binary_expression "puVar34 + -0xd8" (identifier "puVar34") (+ "+") (number_literal "-0xd8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "unaff_s4 = unaff_s4 + 0x28;" (assignment_expression "unaff_s4 = unaff_s4 + 0x28" (identifier "unaff_s4") (= "=") (binary_expression "unaff_s4 + 0x28" (identifier "unaff_s4") (+ "+") (number_literal "0x28"))) (; ";")) (expression_statement "puVar34[-0xe8] = 0;" (assignment_expression "puVar34[-0xe8] = 0" (subscript_expression "puVar34[-0xe8]" (identifier "puVar34") ([ "[") (number_literal "-0xe8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);" (assignment_expression "pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4)" (identifier "pbVar23") (= "=") (binary_expression "pbVar43 + *(int *)(puVar34 + -0xe4)" (identifier "pbVar43") (+ "+") (pointer_expression "*(int *)(puVar34 + -0xe4)" (* "*") (cast_expression "(int *)(puVar34 + -0xe4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xe4)" (( "(") (binary_expression "puVar34 + -0xe4" (identifier "puVar34") (+ "+") (number_literal "-0xe4")) () ")")))))) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xe4) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0xe4) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0xe4)" (* "*") (cast_expression "(byte **)(puVar34 + -0xe4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xe4)" (( "(") (binary_expression "puVar34 + -0xe4" (identifier "puVar34") (+ "+") (number_literal "-0xe4")) () ")")))) (= "=") (identifier "pbVar23")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}"))) (expression_statement "pbVar43 = (byte *)0x0;" (assignment_expression "pbVar43 = (byte *)0x0" (identifier "pbVar43") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0002db5c:\n  pbVar10 = *(byte **)(puVar34 + -0x4c);" (statement_identifier "LAB_0002db5c") (: ":") (expression_statement "pbVar10 = *(byte **)(puVar34 + -0x4c);" (assignment_expression "pbVar10 = *(byte **)(puVar34 + -0x4c)" (identifier "pbVar10") (= "=") (pointer_expression "*(byte **)(puVar34 + -0x4c)" (* "*") (cast_expression "(byte **)(puVar34 + -0x4c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x4c)" (( "(") (binary_expression "puVar34 + -0x4c" (identifier "puVar34") (+ "+") (number_literal "-0x4c")) () ")"))))) (; ";"))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x79d8)" (* "*") (cast_expression "(code **)(iVar15 + -0x79d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79d8)" (( "(") (binary_expression "iVar15 + -0x79d8" (identifier "iVar15") (+ "+") (number_literal "-0x79d8")) () ")"))))) (; ";")) (expression_statement "puVar35 = puVar36;" (assignment_expression "puVar35 = puVar36" (identifier "puVar35") (= "=") (identifier "puVar36")) (; ";")) (if_statement "if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {\n    return pbVar43;\n  }" (if "if") (parenthesized_expression "(pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c))" (( "(") (binary_expression "pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)" (identifier "pbVar10") (== "==") (cast_expression "(byte *)**(undefined4 **)(puVar34 + -0x10c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(puVar34 + -0x10c)" (* "*") (pointer_expression "*(undefined4 **)(puVar34 + -0x10c)" (* "*") (cast_expression "(undefined4 **)(puVar34 + -0x10c)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x10c)" (( "(") (binary_expression "puVar34 + -0x10c" (identifier "puVar34") (+ "+") (number_literal "-0x10c")) () ")"))))))) () ")")) (compound_statement "{\n    return pbVar43;\n  }" ({ "{") (return_statement "return pbVar43;" (return "return") (identifier "pbVar43") (; ";")) (} "}"))) (goto_statement "goto LAB_0002e0e0;" (goto "goto") (statement_identifier "LAB_0002e0e0") (; ";")) (labeled_statement "LAB_0002d8cc:\n  uVar5 = *(uint *)(puVar34 + -0x104);" (statement_identifier "LAB_0002d8cc") (: ":") (expression_statement "uVar5 = *(uint *)(puVar34 + -0x104);" (assignment_expression "uVar5 = *(uint *)(puVar34 + -0x104)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(puVar34 + -0x104)" (* "*") (cast_expression "(uint *)(puVar34 + -0x104)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x104)" (( "(") (binary_expression "puVar34 + -0x104" (identifier "puVar34") (+ "+") (number_literal "-0x104")) () ")"))))) (; ";"))) (expression_statement "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;" (assignment_expression "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1" (pointer_expression "*(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + 4)" (( "(") (binary_expression "*(int *)(puVar34 + -0xfc) + 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" (* "*") (cast_expression "(int *)(puVar34 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "1")) (; ";")) (if_statement "if (uVar5 < 3) {\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }" (if "if") (parenthesized_expression "(uVar5 < 3)" (( "(") (binary_expression "uVar5 < 3" (identifier "uVar5") (< "<") (number_literal "3")) () ")")) (compound_statement "{\nLAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);\n    unaff_s4 = puVar34 + -0xb8;\n    uVar16 = *(undefined4 *)(puVar34 + -0x108);\n    unaff_s6 = puVar34 + -0x80;\n    unaff_s2 = 0;\n    *(undefined4 *)(puVar34 + -0xb8) = 0;\n    *(undefined4 *)(puVar34 + -0x100) = uVar41;\n    unaff_s3 = puVar34 + -0x68;\n    unaff_s5 = puVar34 + -0xa0;\n    *(undefined4 *)(puVar34 + -0xb4) = 0;\n    *(undefined4 *)(puVar34 + -0x80) = 0;\n    *(undefined4 *)(puVar34 + -0xac) = uVar16;\n    **(undefined4 **)(puVar34 + -0x110) = 0;\n    cVar14 = '\0';\n    *(undefined4 *)(puVar34 + -0x7c) = 0;\n    puVar34[-0xbc] = 0;\n    puVar34[-0xb0] = 0;\n    *(undefined4 *)(puVar34 + -0x74) = uVar16;\n    puVar34[-0x84] = 0;\n    puVar34[-0x78] = 0;\n    pbVar24 = pbVar43;\njoined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }\n    iVar9 = *(int *)(puVar34 + -0x68);\n    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;\nLAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;\n    pbVar43 = param_1 + unaff_s2 * 0x28;\nLAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);\n    pbVar24 = pbVar28;\n    if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }\n    pbVar23 = *(byte **)(iVar9 + iVar11);\n    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;\n    if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }\n    cVar14 = puVar34[-0x78];\n    goto joined_r0x0002d9dc;\n  }" ({ "{") (labeled_statement "LAB_0002d988:\n    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" (statement_identifier "LAB_0002d988") (: ":") (expression_statement "uVar41 = *(undefined4 *)(iVar15 + -0x7c98);" (assignment_expression "uVar41 = *(undefined4 *)(iVar15 + -0x7c98)" (identifier "uVar41") (= "=") (pointer_expression "*(undefined4 *)(iVar15 + -0x7c98)" (* "*") (cast_expression "(undefined4 *)(iVar15 + -0x7c98)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7c98)" (( "(") (binary_expression "iVar15 + -0x7c98" (identifier "iVar15") (+ "+") (number_literal "-0x7c98")) () ")"))))) (; ";"))) (expression_statement "unaff_s4 = puVar34 + -0xb8;" (assignment_expression "unaff_s4 = puVar34 + -0xb8" (identifier "unaff_s4") (= "=") (binary_expression "puVar34 + -0xb8" (identifier "puVar34") (+ "+") (number_literal "-0xb8"))) (; ";")) (expression_statement "uVar16 = *(undefined4 *)(puVar34 + -0x108);" (assignment_expression "uVar16 = *(undefined4 *)(puVar34 + -0x108)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined4 *)(puVar34 + -0x108)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x108)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")"))))) (; ";")) (expression_statement "unaff_s6 = puVar34 + -0x80;" (assignment_expression "unaff_s6 = puVar34 + -0x80" (identifier "unaff_s6") (= "=") (binary_expression "puVar34 + -0x80" (identifier "puVar34") (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" (identifier "unaff_s2") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xb8) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xb8) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xb8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xb8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xb8)" (( "(") (binary_expression "puVar34 + -0xb8" (identifier "puVar34") (+ "+") (number_literal "-0xb8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x100) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x100) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x100)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x100)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x100)" (( "(") (binary_expression "puVar34 + -0x100" (identifier "puVar34") (+ "+") (number_literal "-0x100")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "unaff_s3 = puVar34 + -0x68;" (assignment_expression "unaff_s3 = puVar34 + -0x68" (identifier "unaff_s3") (= "=") (binary_expression "puVar34 + -0x68" (identifier "puVar34") (+ "+") (number_literal "-0x68"))) (; ";")) (expression_statement "unaff_s5 = puVar34 + -0xa0;" (assignment_expression "unaff_s5 = puVar34 + -0xa0" (identifier "unaff_s5") (= "=") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0"))) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xb4) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0xb4) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0xb4)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xb4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xb4)" (( "(") (binary_expression "puVar34 + -0xb4" (identifier "puVar34") (+ "+") (number_literal "-0xb4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x80) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0x80) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0x80)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x80)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x80)" (( "(") (binary_expression "puVar34 + -0x80" (identifier "puVar34") (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xac) = uVar16;" (assignment_expression "*(undefined4 *)(puVar34 + -0xac) = uVar16" (pointer_expression "*(undefined4 *)(puVar34 + -0xac)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "**(undefined4 **)(puVar34 + -0x110) = 0;" (assignment_expression "**(undefined4 **)(puVar34 + -0x110) = 0" (pointer_expression "**(undefined4 **)(puVar34 + -0x110)" (* "*") (pointer_expression "*(undefined4 **)(puVar34 + -0x110)" (* "*") (cast_expression "(undefined4 **)(puVar34 + -0x110)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x110)" (( "(") (binary_expression "puVar34 + -0x110" (identifier "puVar34") (+ "+") (number_literal "-0x110")) () ")"))))) (= "=") (number_literal "0")) (; ";")) (expression_statement "cVar14 = '\0';" (assignment_expression "cVar14 = '\0'" (identifier "cVar14") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x7c) = 0;" (assignment_expression "*(undefined4 *)(puVar34 + -0x7c) = 0" (pointer_expression "*(undefined4 *)(puVar34 + -0x7c)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x7c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x7c)" (( "(") (binary_expression "puVar34 + -0x7c" (identifier "puVar34") (+ "+") (number_literal "-0x7c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" (identifier "puVar34") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x74) = uVar16;" (assignment_expression "*(undefined4 *)(puVar34 + -0x74) = uVar16" (pointer_expression "*(undefined4 *)(puVar34 + -0x74)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar34[-0x84] = 0;" (assignment_expression "puVar34[-0x84] = 0" (subscript_expression "puVar34[-0x84]" (identifier "puVar34") ([ "[") (number_literal "-0x84") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar24 = pbVar43;" (assignment_expression "pbVar24 = pbVar43" (identifier "pbVar24") (= "=") (identifier "pbVar43")) (; ";")) (labeled_statement "joined_r0x0002d9dc:\n    if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" (statement_identifier "joined_r0x0002d9dc") (: ":") (if_statement "if (cVar14 == '\0') {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" (if "if") (parenthesized_expression "(cVar14 == '\0')" (( "(") (binary_expression "cVar14 == '\0'" (identifier "cVar14") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      goto LAB_0002daa0;\n    }" ({ "{") (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" (identifier "pbVar23") (= "=") (pointer_expression "*(byte **)(puVar34 + -0x74)" (* "*") (cast_expression "(byte **)(puVar34 + -0x74)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002daa0;" (goto "goto") (statement_identifier "LAB_0002daa0") (; ";")) (} "}")))) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar34 + -0x68)" (* "*") (cast_expression "(int *)(puVar34 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x68)" (( "(") (binary_expression "puVar34 + -0x68" (identifier "puVar34") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (if_statement "if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;" (if "if") (parenthesized_expression "(puVar34[-0x6c] != '\0')" (( "(") (binary_expression "puVar34[-0x6c] != '\0'" (subscript_expression "puVar34[-0x6c]" (identifier "puVar34") ([ "[") (number_literal "-0x6c") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002dae8;" (goto "goto") (statement_identifier "LAB_0002dae8") (; ";"))) (labeled_statement "LAB_0002d9f0:\n    iVar11 = unaff_s2 * 4;" (statement_identifier "LAB_0002d9f0") (: ":") (expression_statement "iVar11 = unaff_s2 * 4;" (assignment_expression "iVar11 = unaff_s2 * 4" (identifier "iVar11") (= "=") (binary_expression "unaff_s2 * 4" (identifier "unaff_s2") (* "*") (number_literal "4"))) (; ";"))) (expression_statement "pbVar43 = param_1 + unaff_s2 * 0x28;" (assignment_expression "pbVar43 = param_1 + unaff_s2 * 0x28" (identifier "pbVar43") (= "=") (binary_expression "param_1 + unaff_s2 * 0x28" (identifier "param_1") (+ "+") (binary_expression "unaff_s2 * 0x28" (identifier "unaff_s2") (* "*") (number_literal "0x28")))) (; ";")) (labeled_statement "LAB_0002da00:\n    pbVar28 = *(byte **)(puVar34 + -0x70);" (statement_identifier "LAB_0002da00") (: ":") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0x70);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0x70)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0x70)" (* "*") (cast_expression "(byte **)(puVar34 + -0x70)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";"))) (expression_statement "pbVar24 = pbVar28;" (assignment_expression "pbVar24 = pbVar28" (identifier "pbVar24") (= "=") (identifier "pbVar28")) (; ";")) (if_statement "if (*(byte **)(pbVar43 + 4) == pbVar28) {\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }\n    else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" (if "if") (parenthesized_expression "(*(byte **)(pbVar43 + 4) == pbVar28)" (( "(") (binary_expression "*(byte **)(pbVar43 + 4) == pbVar28" (pointer_expression "*(byte **)(pbVar43 + 4)" (* "*") (cast_expression "(byte **)(pbVar43 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar43 + 4)" (( "(") (binary_expression "pbVar43 + 4" (identifier "pbVar43") (+ "+") (number_literal "4")) () ")")))) (== "==") (identifier "pbVar28")) () ")")) (compound_statement "{\n      pbVar23 = *(byte **)(puVar34 + -0x74);\n      pcVar33 = *(code **)(iVar15 + -0x79c0);\n      uVar41 = *(undefined4 *)pbVar43;\n      *(int *)(puVar34 + -0x108) = iVar11;\n      pbVar6 = pbVar23;\n      iVar9 = (*pcVar33)(uVar41);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      iVar11 = *(int *)(puVar34 + -0x108);\n      if (iVar9 == 0) goto LAB_0002db1c;\n      cVar14 = puVar34[-0xb0];\n      if (unaff_s2 == 0) goto LAB_0002da1c;\n      iVar9 = *(int *)(puVar34 + -0xfc);\n    }" ({ "{") (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" (identifier "pbVar23") (= "=") (pointer_expression "*(byte **)(puVar34 + -0x74)" (* "*") (cast_expression "(byte **)(puVar34 + -0x74)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")"))))) (; ";")) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79c0);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79c0)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x79c0)" (* "*") (cast_expression "(code **)(iVar15 + -0x79c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79c0)" (( "(") (binary_expression "iVar15 + -0x79c0" (identifier "iVar15") (+ "+") (number_literal "-0x79c0")) () ")"))))) (; ";")) (expression_statement "uVar41 = *(undefined4 *)pbVar43;" (assignment_expression "uVar41 = *(undefined4 *)pbVar43" (identifier "uVar41") (= "=") (pointer_expression "*(undefined4 *)pbVar43" (* "*") (cast_expression "(undefined4 *)pbVar43" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar43")))) (; ";")) (expression_statement "*(int *)(puVar34 + -0x108) = iVar11;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar11" (pointer_expression "*(int *)(puVar34 + -0x108)" (* "*") (cast_expression "(int *)(puVar34 + -0x108)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")")))) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" (identifier "pbVar6") (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(uVar41);" (assignment_expression "iVar9 = (*pcVar33)(uVar41)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(uVar41)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(uVar41)" (( "(") (identifier "uVar41") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "iVar11 = *(int *)(puVar34 + -0x108);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0x108)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar34 + -0x108)" (* "*") (cast_expression "(int *)(puVar34 + -0x108)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_0002db1c;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002db1c;" (goto "goto") (statement_identifier "LAB_0002db1c") (; ";"))) (expression_statement "cVar14 = puVar34[-0xb0];" (assignment_expression "cVar14 = puVar34[-0xb0]" (identifier "cVar14") (= "=") (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]"))) (; ";")) (if_statement "if (unaff_s2 == 0) goto LAB_0002da1c;" (if "if") (parenthesized_expression "(unaff_s2 == 0)" (( "(") (binary_expression "unaff_s2 == 0" (identifier "unaff_s2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002da1c;" (goto "goto") (statement_identifier "LAB_0002da1c") (; ";"))) (expression_statement "iVar9 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0xfc)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar34 + -0xfc)" (* "*") (cast_expression "(int *)(puVar34 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" (else "else") (compound_statement "{\nLAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);\n      if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }\n    }" ({ "{") (labeled_statement "LAB_0002da10:\n      iVar9 = *(int *)(puVar34 + -0xfc);" (statement_identifier "LAB_0002da10") (: ":") (expression_statement "iVar9 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0xfc)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar34 + -0xfc)" (* "*") (cast_expression "(int *)(puVar34 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";"))) (if_statement "if (unaff_s2 == 0) {\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }" (if "if") (parenthesized_expression "(unaff_s2 == 0)" (( "(") (binary_expression "unaff_s2 == 0" (identifier "unaff_s2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        cVar14 = puVar34[-0xb0];\nLAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }\n        pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002da7c:\n        puVar34[-0xb0] = 0;\n        puVar34[-0x78] = 0;\n        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);\n        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));\n        *(byte **)(puVar34 + -0x74) = pbVar23;\nLAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }\nLAB_0002dae8:\n        iVar11 = unaff_s2 * 4;\n        if (iVar9 == 0) goto LAB_0002db40;\n        pbVar43 = param_1 + unaff_s2 * 0x28;\n        if (pbVar43[8] == 0) goto LAB_0002da00;\n        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;\n        goto LAB_0002da10;\n      }" ({ "{") (expression_statement "cVar14 = puVar34[-0xb0];" (assignment_expression "cVar14 = puVar34[-0xb0]" (identifier "cVar14") (= "=") (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]"))) (; ";")) (labeled_statement "LAB_0002da1c:\n        if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" (statement_identifier "LAB_0002da1c") (: ":") (if_statement "if (cVar14 == '\0') {\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }\n        else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" (if "if") (parenthesized_expression "(cVar14 == '\0')" (( "(") (binary_expression "cVar14 == '\0'" (identifier "cVar14") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          pbVar6 = *(byte **)(puVar34 + -0xac);\n          if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          *(int *)(puVar34 + -0xa8) = iVar9;\n          if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }\n          pbVar28 = *(byte **)(puVar34 + -0xac);\n          if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }\n          if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          puVar34[-0xa4] = 1;\n          iVar9 = (*pcVar33)(unaff_s4);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }\n          puVar34[-0xb0] = 1;\nLAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);\n          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;\n        }" ({ "{") (expression_statement "pbVar6 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar6 = *(byte **)(puVar34 + -0xac)" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";")) (if_statement "if (puVar34[-0xbc] == '\0') {\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }" (if "if") (parenthesized_expression "(puVar34[-0xbc] == '\0')" (( "(") (binary_expression "puVar34[-0xbc] == '\0'" (subscript_expression "puVar34[-0xbc]" (identifier "puVar34") ([ "[") (number_literal "-0xbc") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            bVar20 = *pbVar6;\n            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }\n            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            pbVar28 = pbVar6;\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0xbc] = 1;\n          }" ({ "{") (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" (identifier "bVar20") (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0) {\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)\n                & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" (* "*") (cast_expression "(int *)(puVar34 + -0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x100)" (( "(") (binary_expression "puVar34 + -0x100" (identifier "puVar34") (+ "+") (number_literal "-0x100")) () ")")))) (+ "+") (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar20 >> 5)" (( "(") (binary_expression "bVar20 >> 5" (identifier "bVar20") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar20 & 0x1f)" (( "(") (binary_expression "bVar20 & 0x1f" (identifier "bVar20") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *(undefined4 *)(puVar34 + -0xa8) = 1;\n              pbVar28 = (byte *)(int)(char)*pbVar6;\n              puVar34[-0xa4] = 1;\n              puVar34[-0xb0] = 1;\n              *(byte **)(puVar34 + -0xa0) = pbVar28;\n              pbVar6 = (byte *)(uint)bVar20;\n              goto LAB_0002da70;\n            }" ({ "{") (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar6;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar6" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(int)(char)*pbVar6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")))))) (; ";")) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xa0) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xa0) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "pbVar6 = (byte *)(uint)bVar20;" (assignment_expression "pbVar6 = (byte *)(uint)bVar20" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(uint)bVar20" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar20")))) (; ";")) (goto_statement "goto LAB_0002da70;" (goto "goto") (statement_identifier "LAB_0002da70") (; ";")) (} "}"))) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "pbVar28 = pbVar6;" (assignment_expression "pbVar28 = pbVar6" (identifier "pbVar28") (= "=") (identifier "pbVar6")) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e0bc;" (goto "goto") (statement_identifier "LAB_0002e0bc") (; ";"))) (expression_statement "puVar34[-0xbc] = 1;" (assignment_expression "puVar34[-0xbc] = 1" (subscript_expression "puVar34[-0xbc]" (identifier "puVar34") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar6,uVar41)" (identifier "strnlen1") (argument_list "(pbVar6,uVar41)" (( "(") (identifier "pbVar6") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" (identifier "rpl_mbrtowc") (argument_list "(unaff_s5,pbVar6,pbVar24,unaff_s4)" (( "(") (identifier "unaff_s5") (, ",") (identifier "pbVar6") (, ",") (identifier "pbVar24") (, ",") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar34 + -0xa8) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xa8) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xa8)" (* "*") (cast_expression "(int *)(puVar34 + -0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            pbVar28 = *(byte **)(puVar34 + -0xac);\n            puVar34[-0xa4] = 0;\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            goto LAB_0002da7c;\n          }" ({ "{") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";")) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002da7c;" (goto "goto") (statement_identifier "LAB_0002da7c") (; ";")) (} "}"))) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -2) {\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }" (if "if") (parenthesized_expression "(iVar9 == -2)" (( "(") (binary_expression "iVar9 == -2" (identifier "iVar9") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n            puVar34[-0xa4] = 0;\n            goto LAB_0002da7c;\n          }" ({ "{") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28)" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(pbVar28)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(pbVar28)" (( "(") (identifier "pbVar28") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0002da7c;" (goto "goto") (statement_identifier "LAB_0002da7c") (; ";")) (} "}"))) (if_statement "if (iVar9 == 0) {\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }\n          else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            *(undefined4 *)(puVar34 + -0xa8) = 1;\n            bVar20 = *pbVar28;\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n            if (bVar20 != 0) goto LAB_0002e098;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }\n          }" ({ "{") (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "bVar20 = *pbVar28;" (assignment_expression "bVar20 = *pbVar28" (identifier "bVar20") (= "=") (pointer_expression "*pbVar28" (* "*") (identifier "pbVar28"))) (; ";")) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")"))))) (; ";")) (if_statement "if (bVar20 != 0) goto LAB_0002e098;" (if "if") (parenthesized_expression "(bVar20 != 0)" (( "(") (binary_expression "bVar20 != 0" (identifier "bVar20") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e098;" (goto "goto") (statement_identifier "LAB_0002e098") (; ";"))) (if_statement "if (pbVar28 != (byte *)0x0) {\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }" (if "if") (parenthesized_expression "(pbVar28 != (byte *)0x0)" (( "(") (binary_expression "pbVar28 != (byte *)0x0" (identifier "pbVar28") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\n              goto LAB_0002dc58;\n            }" ({ "{") (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" (identifier "pcVar33") (= "=") (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" (( "(") (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" (* "*") (cast_expression "(int *)(iVar15 + -32000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -32000)" (( "(") (binary_expression "iVar15 + -32000" (identifier "iVar15") (+ "+") (number_literal "-32000")) () ")")))) (+ "+") (number_literal "-0x2990")) () ")")))) (; ";")) (goto_statement "goto LAB_0002dc58;" (goto "goto") (statement_identifier "LAB_0002dc58") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" (else "else") (compound_statement "{\n            pbVar28 = *(byte **)(puVar34 + -0xa0);\n          }" ({ "{") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" (identifier "pbVar23") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n            puVar34[-0xbc] = 0;\n          }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar34[-0xbc] = 0;\n          }" ({ "{") (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" (identifier "puVar34") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0002da70:\n          pcVar33 = *(code **)(iVar15 + -0x7b80);" (statement_identifier "LAB_0002da70") (: ":") (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x7b80)" (* "*") (cast_expression "(code **)(iVar15 + -0x7b80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7b80)" (( "(") (binary_expression "iVar15 + -0x7b80" (identifier "iVar15") (+ "+") (number_literal "-0x7b80")) () ")"))))) (; ";"))) (if_statement "if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;" (if "if") (parenthesized_expression "(pbVar28 == (byte *)0x0)" (( "(") (binary_expression "pbVar28 == (byte *)0x0" (identifier "pbVar28") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ddd4;" (goto "goto") (statement_identifier "LAB_0002ddd4") (; ";"))) (} "}")) (else_clause "else {\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" (else "else") (compound_statement "{\n          pbVar28 = *(byte **)(puVar34 + -0xa0);\n          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;\n        }" ({ "{") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")"))))) (; ";")) (if_statement "if (puVar34[-0xa4] != '\0') goto LAB_0002da70;" (if "if") (parenthesized_expression "(puVar34[-0xa4] != '\0')" (( "(") (binary_expression "puVar34[-0xa4] != '\0'" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002da70;" (goto "goto") (statement_identifier "LAB_0002da70") (; ";"))) (} "}"))))) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";")) (labeled_statement "LAB_0002da7c:\n        puVar34[-0xb0] = 0;" (statement_identifier "LAB_0002da7c") (: ":") (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8)" (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")")))) (= "=") (binary_expression "pbVar28 + *(int *)(puVar34 + -0xa8)" (identifier "pbVar28") (+ "+") (pointer_expression "*(int *)(puVar34 + -0xa8)" (* "*") (cast_expression "(int *)(puVar34 + -0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))))) (; ";")) (expression_statement "pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));" (assignment_expression "pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" (identifier "pbVar23") (= "=") (cast_expression "(byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70))" (( "(") (binary_expression "*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70)" (pointer_expression "*(int *)(puVar34 + -0x74)" (* "*") (cast_expression "(int *)(puVar34 + -0x74)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")")))) (+ "+") (pointer_expression "*(int *)(puVar34 + -0x70)" (* "*") (cast_expression "(int *)(puVar34 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x74) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0x74) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x74)" (* "*") (cast_expression "(byte **)(puVar34 + -0x74)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")")))) (= "=") (identifier "pbVar23")) (; ";")) (labeled_statement "LAB_0002daa0:\n        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;" (statement_identifier "LAB_0002daa0") (: ":") (if_statement "if (puVar34[-0x84] != '\0') goto LAB_0002dc78;" (if "if") (parenthesized_expression "(puVar34[-0x84] != '\0')" (( "(") (binary_expression "puVar34[-0x84] != '\0'" (subscript_expression "puVar34[-0x84]" (identifier "puVar34") ([ "[") (number_literal "-0x84") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002dc78;" (goto "goto") (statement_identifier "LAB_0002dc78") (; ";")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0) {\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }\n        else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)\n            & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" (* "*") (cast_expression "(int *)(puVar34 + -0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x100)" (( "(") (binary_expression "puVar34 + -0x100" (identifier "puVar34") (+ "+") (number_literal "-0x100")) () ")")))) (+ "+") (binary_expression "(uint)(*pbVar23 >> 5) * 4" (call_expression "(uint)(*pbVar23 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar23 >> 5)" (( "(") (binary_expression "*pbVar23 >> 5" (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*pbVar23 & 0x1f)" (( "(") (binary_expression "*pbVar23 & 0x1f" (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }\n          iVar9 = *(int *)(puVar34 + -0x68);\nLAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);\n          pbVar23 = (byte *)0x1;\n          *(int *)(puVar34 + -0x108) = iVar9;\n          puVar34[-0x6c] = 1;\n          iVar11 = (*pcVar33)(unaff_s6);\n          iVar15 = *(int *)(puVar34 + -0x118);\n          iVar9 = *(int *)(puVar34 + -0x108);\n          if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }\n          puVar34[-0x78] = 1;\n        }" ({ "{") (while_statement "while( true ) {\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            iVar9 = (*pcVar33)(unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            if (iVar9 == 0) goto LAB_0002e0bc;\n            puVar34[-0x84] = 1;\nLAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);\n            pbVar6 = pbVar23;\n            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);\n            iVar15 = *(int *)(puVar34 + -0x118);\n            *(int *)(puVar34 + -0x70) = iVar9;\n            if (iVar9 == -1) goto LAB_0002df14;\n            if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }\n            pbVar23 = *(byte **)(puVar34 + -0x74);\n            if (iVar9 != 0) break;\n            *(undefined4 *)(puVar34 + -0x70) = 1;\n            iVar9 = *(int *)(puVar34 + -0x68);\n            if (*pbVar23 != 0) goto LAB_0002e098;\n            if (iVar9 == 0) goto LAB_0002dcdc;\n            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);\nLAB_0002dc58:\n            FUN_0002d670();\n          }" ({ "{") (expression_statement "iVar9 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s6)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e0bc;" (goto "goto") (statement_identifier "LAB_0002e0bc") (; ";"))) (expression_statement "puVar34[-0x84] = 1;" (assignment_expression "puVar34[-0x84] = 1" (subscript_expression "puVar34[-0x84]" (identifier "puVar34") ([ "[") (number_literal "-0x84") (] "]")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0002dc78:\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();" (statement_identifier "LAB_0002dc78") (: ":") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar23,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar23,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar23,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar23,uVar41)" (identifier "strnlen1") (argument_list "(pbVar23,uVar41)" (( "(") (identifier "pbVar23") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "pbVar6 = pbVar23;" (assignment_expression "pbVar6 = pbVar23" (identifier "pbVar6") (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6)" (identifier "rpl_mbrtowc") (argument_list "(unaff_s3,pbVar23,pbVar24,unaff_s6)" (( "(") (identifier "unaff_s3") (, ",") (identifier "pbVar23") (, ",") (identifier "pbVar24") (, ",") (identifier "unaff_s6") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar34 + -0x70) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x70) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x70)" (* "*") (cast_expression "(int *)(puVar34 + -0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) goto LAB_0002df14;" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0002df14;" (goto "goto") (statement_identifier "LAB_0002df14") (; ";"))) (if_statement "if (iVar9 == -2) {\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }" (if "if") (parenthesized_expression "(iVar9 == -2)" (( "(") (binary_expression "iVar9 == -2" (identifier "iVar9") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));\n              iVar15 = *(int *)(puVar34 + -0x118);\n              *(undefined4 *)(puVar34 + -0x70) = uVar41;\n              puVar34[-0x6c] = 0;\n              puVar34[-0x78] = 1;\n              goto LAB_0002d9f0;\n            }" ({ "{") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74))" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar34 + -0x74))" (( "(") (pointer_expression "*(undefined4 *)(puVar34 + -0x74)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x74)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar34[-0x6c] = 0;" (assignment_expression "puVar34[-0x6c] = 0" (subscript_expression "puVar34[-0x6c]" (identifier "puVar34") ([ "[") (number_literal "-0x6c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002d9f0;" (goto "goto") (statement_identifier "LAB_0002d9f0") (; ";")) (} "}"))) (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" (identifier "pbVar23") (= "=") (pointer_expression "*(byte **)(puVar34 + -0x74)" (* "*") (cast_expression "(byte **)(puVar34 + -0x74)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) break;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar34 + -0x68)" (* "*") (cast_expression "(int *)(puVar34 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x68)" (( "(") (binary_expression "puVar34 + -0x68" (identifier "puVar34") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (if_statement "if (*pbVar23 != 0) goto LAB_0002e098;" (if "if") (parenthesized_expression "(*pbVar23 != 0)" (( "(") (binary_expression "*pbVar23 != 0" (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e098;" (goto "goto") (statement_identifier "LAB_0002e098") (; ";"))) (if_statement "if (iVar9 == 0) goto LAB_0002dcdc;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002dcdc;" (goto "goto") (statement_identifier "LAB_0002dcdc") (; ";"))) (expression_statement "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);" (assignment_expression "pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990)" (identifier "pcVar33") (= "=") (cast_expression "(code *)(*(int *)(iVar15 + -32000) + -0x2990)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2990)" (( "(") (binary_expression "*(int *)(iVar15 + -32000) + -0x2990" (pointer_expression "*(int *)(iVar15 + -32000)" (* "*") (cast_expression "(int *)(iVar15 + -32000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -32000)" (( "(") (binary_expression "iVar15 + -32000" (identifier "iVar15") (+ "+") (number_literal "-32000")) () ")")))) (+ "+") (number_literal "-0x2990")) () ")")))) (; ";")) (labeled_statement "LAB_0002dc58:\n            FUN_0002d670();" (statement_identifier "LAB_0002dc58") (: ":") (expression_statement "FUN_0002d670();" (call_expression "FUN_0002d670()" (identifier "FUN_0002d670") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (expression_statement "iVar9 = *(int *)(puVar34 + -0x68);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x68)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar34 + -0x68)" (* "*") (cast_expression "(int *)(puVar34 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x68)" (( "(") (binary_expression "puVar34 + -0x68" (identifier "puVar34") (+ "+") (number_literal "-0x68")) () ")"))))) (; ";")) (labeled_statement "LAB_0002dcdc:\n          pcVar33 = *(code **)(iVar15 + -0x799c);" (statement_identifier "LAB_0002dcdc") (: ":") (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";"))) (expression_statement "pbVar23 = (byte *)0x1;" (assignment_expression "pbVar23 = (byte *)0x1" (identifier "pbVar23") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "*(int *)(puVar34 + -0x108) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x108) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x108)" (* "*") (cast_expression "(int *)(puVar34 + -0x108)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "puVar34[-0x6c] = 1;" (assignment_expression "puVar34[-0x6c] = 1" (subscript_expression "puVar34[-0x6c]" (identifier "puVar34") ([ "[") (number_literal "-0x6c") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar11 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar11 = (*pcVar33)(unaff_s6)" (identifier "iVar11") (= "=") (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar34 + -0x108);" (assignment_expression "iVar9 = *(int *)(puVar34 + -0x108)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar34 + -0x108)" (* "*") (cast_expression "(int *)(puVar34 + -0x108)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")"))))) (; ";")) (if_statement "if (iVar11 != 0) {\n            puVar34[-0x84] = 0;\n          }" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar34[-0x84] = 0;\n          }" ({ "{") (expression_statement "puVar34[-0x84] = 0;" (assignment_expression "puVar34[-0x84] = 0" (subscript_expression "puVar34[-0x84]" (identifier "puVar34") ([ "[") (number_literal "-0x84") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" (else "else") (compound_statement "{\n          *(undefined4 *)(puVar34 + -0x70) = 1;\n          iVar9 = (int)(char)*pbVar23;\n          puVar34[-0x6c] = 1;\n          puVar34[-0x78] = 1;\n          *(int *)(puVar34 + -0x68) = iVar9;\n        }" ({ "{") (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (int)(char)*pbVar23;" (assignment_expression "iVar9 = (int)(char)*pbVar23" (identifier "iVar9") (= "=") (cast_expression "(int)(char)*pbVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar23" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar23" (* "*") (identifier "pbVar23"))))) (; ";")) (expression_statement "puVar34[-0x6c] = 1;" (assignment_expression "puVar34[-0x6c] = 1" (subscript_expression "puVar34[-0x6c]" (identifier "puVar34") ([ "[") (number_literal "-0x6c") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(puVar34 + -0x68) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0x68) = iVar9" (pointer_expression "*(int *)(puVar34 + -0x68)" (* "*") (cast_expression "(int *)(puVar34 + -0x68)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x68)" (( "(") (binary_expression "puVar34 + -0x68" (identifier "puVar34") (+ "+") (number_literal "-0x68")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (} "}")))) (labeled_statement "LAB_0002dae8:\n        iVar11 = unaff_s2 * 4;" (statement_identifier "LAB_0002dae8") (: ":") (expression_statement "iVar11 = unaff_s2 * 4;" (assignment_expression "iVar11 = unaff_s2 * 4" (identifier "iVar11") (= "=") (binary_expression "unaff_s2 * 4" (identifier "unaff_s2") (* "*") (number_literal "4"))) (; ";"))) (if_statement "if (iVar9 == 0) goto LAB_0002db40;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002db40;" (goto "goto") (statement_identifier "LAB_0002db40") (; ";"))) (expression_statement "pbVar43 = param_1 + unaff_s2 * 0x28;" (assignment_expression "pbVar43 = param_1 + unaff_s2 * 0x28" (identifier "pbVar43") (= "=") (binary_expression "param_1 + unaff_s2 * 0x28" (identifier "param_1") (+ "+") (binary_expression "unaff_s2 * 0x28" (identifier "unaff_s2") (* "*") (number_literal "0x28")))) (; ";")) (if_statement "if (pbVar43[8] == 0) goto LAB_0002da00;" (if "if") (parenthesized_expression "(pbVar43[8] == 0)" (( "(") (binary_expression "pbVar43[8] == 0" (subscript_expression "pbVar43[8]" (identifier "pbVar43") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002da00;" (goto "goto") (statement_identifier "LAB_0002da00") (; ";"))) (if_statement "if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;" (if "if") (parenthesized_expression "(*(int *)(pbVar43 + 0xc) == iVar9)" (( "(") (binary_expression "*(int *)(pbVar43 + 0xc) == iVar9" (pointer_expression "*(int *)(pbVar43 + 0xc)" (* "*") (cast_expression "(int *)(pbVar43 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar43 + 0xc)" (( "(") (binary_expression "pbVar43 + 0xc" (identifier "pbVar43") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (identifier "iVar9")) () ")")) (goto_statement "goto code_r0x0002db14;" (goto "goto") (statement_identifier "code_r0x0002db14") (; ";"))) (goto_statement "goto LAB_0002da10;" (goto "goto") (statement_identifier "LAB_0002da10") (; ";")) (} "}"))) (} "}")))) (expression_statement "pbVar23 = *(byte **)(iVar9 + iVar11);" (assignment_expression "pbVar23 = *(byte **)(iVar9 + iVar11)" (identifier "pbVar23") (= "=") (pointer_expression "*(byte **)(iVar9 + iVar11)" (* "*") (cast_expression "(byte **)(iVar9 + iVar11)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar9 + iVar11)" (( "(") (binary_expression "iVar9 + iVar11" (identifier "iVar9") (+ "+") (identifier "iVar11")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;" (assignment_expression "*(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23" (pointer_expression "*(int *)(puVar34 + -0x108)" (* "*") (cast_expression "(int *)(puVar34 + -0x108)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")")))) (= "=") (binary_expression "unaff_s2 - (int)pbVar23" (identifier "unaff_s2") (- "-") (cast_expression "(int)pbVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar23")))) (; ";")) (if_statement "if (pbVar23 != (byte *)0x0) {\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }" (if "if") (parenthesized_expression "(pbVar23 != (byte *)0x0)" (( "(") (binary_expression "pbVar23 != (byte *)0x0" (identifier "pbVar23") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }\n      pbVar28 = *(byte **)(puVar34 + -0xac);\nLAB_0002dd80:\n      pbVar6 = pbVar28;\n      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;\n      pbVar6 = (byte *)(uint)*pbVar28;\n      pcVar33 = *(code **)(iVar15 + -0x799c);\n      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;\n      *(undefined4 *)(puVar34 + -0xa8) = 1;\n      pbVar28 = (byte *)(int)(char)*pbVar28;\n      puVar34[-0xa4] = 1;\n      puVar34[-0xb0] = 1;\n      *(byte **)(puVar34 + -0xa0) = pbVar28;\nLAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);\n      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;\nLAB_0002ddd4:\n      (*pcVar33)();\nLAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 == 0) goto LAB_0002e0bc;\n      puVar34[-0xbc] = 1;\n      pbVar6 = pbVar28;\nLAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      *(int *)(puVar34 + -0xa8) = iVar9;\n      if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }\n      pcVar30 = *(char **)(puVar34 + -0xac);\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s2 = 1;\n      puVar34[-0xa4] = 1;\n      iVar9 = (*pcVar33)(unaff_s4);\n      iVar15 = *(int *)(puVar34 + -0x118);\n      if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }\n      puVar34[-0xb0] = 1;\n      goto LAB_0002ddcc;\n    }" ({ "{") (if_statement "if (puVar34[-0xb0] != '\0') {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }" (if "if") (parenthesized_expression "(puVar34[-0xb0] != '\0')" (( "(") (binary_expression "puVar34[-0xb0] != '\0'" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;\n        goto LAB_0002dd64;\n      }" ({ "{") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")"))))) (; ";")) (if_statement "if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;" (if "if") (parenthesized_expression "(puVar34[-0xa4] != '\0')" (( "(") (binary_expression "puVar34[-0xa4] != '\0'" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ddcc;" (goto "goto") (statement_identifier "LAB_0002ddcc") (; ";"))) (goto_statement "goto LAB_0002dd64;" (goto "goto") (statement_identifier "LAB_0002dd64") (; ";")) (} "}"))) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xac);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xac)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";")) (labeled_statement "LAB_0002dd80:\n      pbVar6 = pbVar28;" (statement_identifier "LAB_0002dd80") (: ":") (expression_statement "pbVar6 = pbVar28;" (assignment_expression "pbVar6 = pbVar28" (identifier "pbVar6") (= "=") (identifier "pbVar28")) (; ";"))) (if_statement "if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;" (if "if") (parenthesized_expression "(puVar34[-0xbc] != '\0')" (( "(") (binary_expression "puVar34[-0xbc] != '\0'" (subscript_expression "puVar34[-0xbc]" (identifier "puVar34") ([ "[") (number_literal "-0xbc") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ddf4;" (goto "goto") (statement_identifier "LAB_0002ddf4") (; ";"))) (expression_statement "pbVar6 = (byte *)(uint)*pbVar28;" (assignment_expression "pbVar6 = (byte *)(uint)*pbVar28" (identifier "pbVar6") (= "=") (binary_expression "(byte *)(uint)*pbVar28" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar28"))) (; ";")) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (if_statement "if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>\n           ((uint)pbVar6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4" (pointer_expression "*(int *)(puVar34 + -0x100)" (* "*") (cast_expression "(int *)(puVar34 + -0x100)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x100)" (( "(") (binary_expression "puVar34 + -0x100" (identifier "puVar34") (+ "+") (number_literal "-0x100")) () ")")))) (+ "+") (binary_expression "(uint)(*pbVar28 >> 5) * 4" (call_expression "(uint)(*pbVar28 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar28 >> 5)" (( "(") (binary_expression "*pbVar28 >> 5" (pointer_expression "*pbVar28" (* "*") (identifier "pbVar28")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "((uint)pbVar6 & 0x1f)" (( "(") (binary_expression "(uint)pbVar6 & 0x1f" (cast_expression "(uint)pbVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar6")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002dddc;" (goto "goto") (statement_identifier "LAB_0002dddc") (; ";"))) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar28 = (byte *)(int)(char)*pbVar28;" (assignment_expression "pbVar28 = (byte *)(int)(char)*pbVar28" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(int)(char)*pbVar28" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar28" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar28" (* "*") (identifier "pbVar28")))))) (; ";")) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xa0) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xa0) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (labeled_statement "LAB_0002ddcc:\n      pcVar33 = *(code **)(iVar15 + -0x7b80);" (statement_identifier "LAB_0002ddcc") (: ":") (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x7b80)" (* "*") (cast_expression "(code **)(iVar15 + -0x7b80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7b80)" (( "(") (binary_expression "iVar15 + -0x7b80" (identifier "iVar15") (+ "+") (number_literal "-0x7b80")) () ")"))))) (; ";"))) (if_statement "if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;" (if "if") (parenthesized_expression "(pbVar28 != (byte *)0x0)" (( "(") (binary_expression "pbVar28 != (byte *)0x0" (identifier "pbVar28") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002dd64;" (goto "goto") (statement_identifier "LAB_0002dd64") (; ";"))) (labeled_statement "LAB_0002ddd4:\n      (*pcVar33)();" (statement_identifier "LAB_0002ddd4") (: ":") (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_0002dddc:\n      iVar9 = (*pcVar33)(unaff_s4);" (statement_identifier "LAB_0002dddc") (: ":") (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";"))) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_0002e0bc;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e0bc;" (goto "goto") (statement_identifier "LAB_0002e0bc") (; ";"))) (expression_statement "puVar34[-0xbc] = 1;" (assignment_expression "puVar34[-0xbc] = 1" (subscript_expression "puVar34[-0xbc]" (identifier "puVar34") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar6 = pbVar28;" (assignment_expression "pbVar6 = pbVar28" (identifier "pbVar6") (= "=") (identifier "pbVar28")) (; ";")) (labeled_statement "LAB_0002ddf4:\n      uVar41 = (**(code **)(iVar15 + -0x7a18))();" (statement_identifier "LAB_0002ddf4") (: ":") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar6,uVar41)" (identifier "strnlen1") (argument_list "(pbVar6,uVar41)" (( "(") (identifier "pbVar6") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4)" (identifier "rpl_mbrtowc") (argument_list "(unaff_s5,pbVar6,pbVar24,unaff_s4)" (( "(") (identifier "unaff_s5") (, ",") (identifier "pbVar6") (, ",") (identifier "pbVar24") (, ",") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar34 + -0xa8) = iVar9;" (assignment_expression "*(int *)(puVar34 + -0xa8) = iVar9" (pointer_expression "*(int *)(puVar34 + -0xa8)" (* "*") (cast_expression "(int *)(puVar34 + -0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        puVar34[-0xa4] = 0;\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        puVar34[-0xb0] = 0;\n        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));\n        *(byte **)(puVar34 + -0xac) = pbVar28;\n        goto joined_r0x0002dea0;\n      }" ({ "{") (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8))" (( "(") (binary_expression "*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8)" (pointer_expression "*(int *)(puVar34 + -0xac)" (* "*") (cast_expression "(int *)(puVar34 + -0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")")))) (+ "+") (pointer_expression "*(int *)(puVar34 + -0xa8)" (* "*") (cast_expression "(int *)(puVar34 + -0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (goto_statement "goto joined_r0x0002dea0;" (goto "goto") (statement_identifier "joined_r0x0002dea0") (; ";")) (} "}"))) (expression_statement "pcVar30 = *(char **)(puVar34 + -0xac);" (assignment_expression "pcVar30 = *(char **)(puVar34 + -0xac)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar34 + -0xac)" (* "*") (cast_expression "(char **)(puVar34 + -0xac)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }" (if "if") (parenthesized_expression "(iVar9 == -2)" (( "(") (binary_expression "iVar9 == -2" (identifier "iVar9") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n        iVar15 = *(int *)(puVar34 + -0x118);\n        *(undefined4 *)(puVar34 + -0xa8) = uVar41;\n        puVar34[-0xa4] = 0;\n        goto LAB_0002dd68;\n      }" ({ "{") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(pcVar30)" (( "(") (identifier "pcVar30") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = uVar41" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar34[-0xa4] = 0;" (assignment_expression "puVar34[-0xa4] = 0" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0002dd68;" (goto "goto") (statement_identifier "LAB_0002dd68") (; ";")) (} "}"))) (if_statement "if (iVar9 == 0) {\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }\n      else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(puVar34 + -0xa8) = 1;\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        if (*pcVar30 != '\0') goto LAB_0002e098;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;\n      }" ({ "{") (expression_statement "*(undefined4 *)(puVar34 + -0xa8) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0xa8) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0xa8)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xa8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")"))))) (; ";")) (if_statement "if (*pcVar30 != '\0') goto LAB_0002e098;" (if "if") (parenthesized_expression "(*pcVar30 != '\0')" (( "(") (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" (* "*") (identifier "pcVar30")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002e098;" (goto "goto") (statement_identifier "LAB_0002e098") (; ";"))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (if_statement "if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;" (if "if") (parenthesized_expression "(pbVar28 != (byte *)0x0)" (( "(") (binary_expression "pbVar28 != (byte *)0x0" (identifier "pbVar28") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto code_r0x0002def0;" (goto "goto") (statement_identifier "code_r0x0002def0") (; ";"))) (} "}")) (else_clause "else {\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" (else "else") (compound_statement "{\n        pbVar28 = *(byte **)(puVar34 + -0xa0);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" ({ "{") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0xa0);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0xa0)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0xa0)" (* "*") (cast_expression "(byte **)(puVar34 + -0xa0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xa0)" (( "(") (binary_expression "puVar34 + -0xa0" (identifier "puVar34") (+ "+") (number_literal "-0xa0")) () ")"))))) (; ";")) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "unaff_s2 = 1;" (assignment_expression "unaff_s2 = 1" (identifier "unaff_s2") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar34[-0xa4] = 1;" (assignment_expression "puVar34[-0xa4] = 1" (subscript_expression "puVar34[-0xa4]" (identifier "puVar34") ([ "[") (number_literal "-0xa4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n        puVar34[-0xbc] = 0;\n      }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar34[-0xbc] = 0;\n      }" ({ "{") (expression_statement "puVar34[-0xbc] = 0;" (assignment_expression "puVar34[-0xbc] = 0" (subscript_expression "puVar34[-0xbc]" (identifier "puVar34") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar34[-0xb0] = 1;" (assignment_expression "puVar34[-0xb0] = 1" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002ddcc;" (goto "goto") (statement_identifier "LAB_0002ddcc") (; ";")) (} "}"))) (expression_statement "cVar14 = puVar34[-0x78];" (assignment_expression "cVar14 = puVar34[-0x78]" (identifier "cVar14") (= "=") (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]"))) (; ";")) (goto_statement "goto joined_r0x0002d9dc;" (goto "goto") (statement_identifier "joined_r0x0002d9dc") (; ";")) (} "}"))) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar23 = (byte *)0x2;" (assignment_expression "pbVar23 = (byte *)0x2" (identifier "pbVar23") (= "=") (cast_expression "(byte *)0x2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "pbVar24 = param_1;" (assignment_expression "pbVar24 = param_1" (identifier "pbVar24") (= "=") (identifier "param_1")) (; ";")) (labeled_statement "LAB_0002d8f0:\n  pbVar28 = (byte *)(uint)pbVar24[0x30];" (statement_identifier "LAB_0002d8f0") (: ":") (expression_statement "pbVar28 = (byte *)(uint)pbVar24[0x30];" (assignment_expression "pbVar28 = (byte *)(uint)pbVar24[0x30]" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(uint)pbVar24[0x30]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)pbVar24[0x30]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar24[0x30]" (identifier "pbVar24") ([ "[") (number_literal "0x30") (] "]"))))) (; ";"))) (do_statement "do {\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  } while( true );" (do "do") (compound_statement "{\n    pbVar10 = param_1 + iVar9 * 0x28;\n    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }\n    if (iVar9 == 0) break;\n    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);\n  }" ({ "{") (expression_statement "pbVar10 = param_1 + iVar9 * 0x28;" (assignment_expression "pbVar10 = param_1 + iVar9 * 0x28" (identifier "pbVar10") (= "=") (binary_expression "param_1 + iVar9 * 0x28" (identifier "param_1") (+ "+") (binary_expression "iVar9 * 0x28" (identifier "iVar9") (* "*") (number_literal "0x28")))) (; ";")) (if_statement "if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }\n    else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" (if "if") (parenthesized_expression "((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0))" (( "(") (binary_expression "(pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)" (parenthesized_expression "(pbVar28 == (byte *)0x0)" (( "(") (binary_expression "pbVar28 == (byte *)0x0" (identifier "pbVar28") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(pbVar10[8] == 0)" (( "(") (binary_expression "pbVar10[8] == 0" (subscript_expression "pbVar10[8]" (identifier "pbVar10") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      pbVar43 = *(byte **)(pbVar24 + 0x2c);\n      if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }\n    }" ({ "{") (expression_statement "pbVar43 = *(byte **)(pbVar24 + 0x2c);" (assignment_expression "pbVar43 = *(byte **)(pbVar24 + 0x2c)" (identifier "pbVar43") (= "=") (pointer_expression "*(byte **)(pbVar24 + 0x2c)" (* "*") (cast_expression "(byte **)(pbVar24 + 0x2c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar24 + 0x2c)" (( "(") (binary_expression "pbVar24 + 0x2c" (identifier "pbVar24") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (if_statement "if (pbVar43 == *(byte **)(pbVar10 + 4)) {\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" (if "if") (parenthesized_expression "(pbVar43 == *(byte **)(pbVar10 + 4))" (( "(") (binary_expression "pbVar43 == *(byte **)(pbVar10 + 4)" (identifier "pbVar43") (== "==") (pointer_expression "*(byte **)(pbVar10 + 4)" (* "*") (cast_expression "(byte **)(pbVar10 + 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar10 + 4)" (( "(") (binary_expression "pbVar10 + 4" (identifier "pbVar10") (+ "+") (number_literal "4")) () ")"))))) () ")")) (compound_statement "{\n        pbVar6 = *(byte **)pbVar10;\n        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));\n        iVar15 = *(int *)(puVar34 + -0x118);\n        if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }\n      }" ({ "{") (expression_statement "pbVar6 = *(byte **)pbVar10;" (assignment_expression "pbVar6 = *(byte **)pbVar10" (identifier "pbVar6") (= "=") (pointer_expression "*(byte **)pbVar10" (* "*") (cast_expression "(byte **)pbVar10" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar10")))) (; ";")) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28))" (identifier "iVar11") (= "=") (call_expression "(**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28))" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x79c0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x79c0)" (* "*") (cast_expression "(code **)(iVar15 + -0x79c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79c0)" (( "(") (binary_expression "iVar15 + -0x79c0" (identifier "iVar15") (+ "+") (number_literal "-0x79c0")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(pbVar24 + 0x28))" (( "(") (pointer_expression "*(undefined4 *)(pbVar24 + 0x28)" (* "*") (cast_expression "(undefined4 *)(pbVar24 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar24 + 0x28)" (( "(") (binary_expression "pbVar24 + 0x28" (identifier "pbVar24") (+ "+") (number_literal "0x28")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (if_statement "if (iVar11 == 0) {\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar11 = *(int *)(puVar34 + -0xfc);\n          goto LAB_0002d964;\n        }" ({ "{") (expression_statement "iVar11 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0xfc)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar34 + -0xfc)" (* "*") (cast_expression "(int *)(puVar34 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002d964;" (goto "goto") (statement_identifier "LAB_0002d964") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" (else "else") (compound_statement "{\n      iVar11 = *(int *)(puVar34 + -0xfc);\n      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }\n    }" ({ "{") (expression_statement "iVar11 = *(int *)(puVar34 + -0xfc);" (assignment_expression "iVar11 = *(int *)(puVar34 + -0xfc)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(puVar34 + -0xfc)" (* "*") (cast_expression "(int *)(puVar34 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";")) (if_statement "if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }" (if "if") (parenthesized_expression "(*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc))" (( "(") (binary_expression "*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)" (pointer_expression "*(int *)(pbVar24 + 0x34)" (* "*") (cast_expression "(int *)(pbVar24 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar24 + 0x34)" (( "(") (binary_expression "pbVar24 + 0x34" (identifier "pbVar24") (+ "+") (number_literal "0x34")) () ")")))) (== "==") (pointer_expression "*(int *)(pbVar10 + 0xc)" (* "*") (cast_expression "(int *)(pbVar10 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar10 + 0xc)" (( "(") (binary_expression "pbVar10 + 0xc" (identifier "pbVar10") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\nLAB_0002d964:\n        iVar9 = iVar9 + 1;\n        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;\n        goto LAB_0002d978;\n      }" ({ "{") (labeled_statement "LAB_0002d964:\n        iVar9 = iVar9 + 1;" (statement_identifier "LAB_0002d964") (: ":") (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "*(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;" (assignment_expression "*(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9" (pointer_expression "*(int *)(iVar11 + (int)pbVar23 * 4)" (* "*") (cast_expression "(int *)(iVar11 + (int)pbVar23 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + (int)pbVar23 * 4)" (( "(") (binary_expression "iVar11 + (int)pbVar23 * 4" (identifier "iVar11") (+ "+") (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar23")) (* "*") (number_literal "4"))) () ")")))) (= "=") (binary_expression "(int)pbVar23 - iVar9" (cast_expression "(int)pbVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar23")) (- "-") (identifier "iVar9"))) (; ";")) (goto_statement "goto LAB_0002d978;" (goto "goto") (statement_identifier "LAB_0002d978") (; ";")) (} "}"))) (} "}")))) (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);" (assignment_expression "iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" (identifier "iVar9") (= "=") (binary_expression "iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" (identifier "iVar9") (- "-") (pointer_expression "*(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" (* "*") (cast_expression "(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + iVar9 * 4)" (( "(") (binary_expression "*(int *)(puVar34 + -0xfc) + iVar9 * 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" (* "*") (cast_expression "(int *)(puVar34 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")")))) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (expression_statement "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;" (assignment_expression "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23" (pointer_expression "*(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" (* "*") (cast_expression "(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4)" (( "(") (binary_expression "*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4" (pointer_expression "*(int *)(puVar34 + -0xfc)" (* "*") (cast_expression "(int *)(puVar34 + -0xfc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xfc)" (( "(") (binary_expression "puVar34 + -0xfc" (identifier "puVar34") (+ "+") (number_literal "-0xfc")) () ")")))) (+ "+") (binary_expression "(int)pbVar23 * 4" (cast_expression "(int)pbVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar23")) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "pbVar23")) (; ";")) (labeled_statement "LAB_0002d978:\n  pbVar23 = pbVar23 + 1;" (statement_identifier "LAB_0002d978") (: ":") (expression_statement "pbVar23 = pbVar23 + 1;" (assignment_expression "pbVar23 = pbVar23 + 1" (identifier "pbVar23") (= "=") (binary_expression "pbVar23 + 1" (identifier "pbVar23") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "pbVar24 = pbVar24 + 0x28;" (assignment_expression "pbVar24 = pbVar24 + 0x28" (identifier "pbVar24") (= "=") (binary_expression "pbVar24 + 0x28" (identifier "pbVar24") (+ "+") (number_literal "0x28"))) (; ";")) (if_statement "if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;" (if "if") (parenthesized_expression "(*(byte **)(puVar34 + -0x104) == pbVar23)" (( "(") (binary_expression "*(byte **)(puVar34 + -0x104) == pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x104)" (* "*") (cast_expression "(byte **)(puVar34 + -0x104)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x104)" (( "(") (binary_expression "puVar34 + -0x104" (identifier "puVar34") (+ "+") (number_literal "-0x104")) () ")")))) (== "==") (identifier "pbVar23")) () ")")) (goto_statement "goto LAB_0002d988;" (goto "goto") (statement_identifier "LAB_0002d988") (; ";"))) (goto_statement "goto LAB_0002d8f0;" (goto "goto") (statement_identifier "LAB_0002d8f0") (; ";")) (labeled_statement "code_r0x0002db14:\n  pbVar28 = *(byte **)(puVar34 + -0x70);" (statement_identifier "code_r0x0002db14") (: ":") (expression_statement "pbVar28 = *(byte **)(puVar34 + -0x70);" (assignment_expression "pbVar28 = *(byte **)(puVar34 + -0x70)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar34 + -0x70)" (* "*") (cast_expression "(byte **)(puVar34 + -0x70)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")"))))) (; ";"))) (expression_statement "pbVar23 = *(byte **)(puVar34 + -0x74);" (assignment_expression "pbVar23 = *(byte **)(puVar34 + -0x74)" (identifier "pbVar23") (= "=") (pointer_expression "*(byte **)(puVar34 + -0x74)" (* "*") (cast_expression "(byte **)(puVar34 + -0x74)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")"))))) (; ";")) (labeled_statement "LAB_0002db1c:\n  pbVar23 = pbVar23 + (int)pbVar28;" (statement_identifier "LAB_0002db1c") (: ":") (expression_statement "pbVar23 = pbVar23 + (int)pbVar28;" (assignment_expression "pbVar23 = pbVar23 + (int)pbVar28" (identifier "pbVar23") (= "=") (binary_expression "pbVar23 + (int)pbVar28" (identifier "pbVar23") (+ "+") (cast_expression "(int)pbVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar28")))) (; ";"))) (expression_statement "unaff_s2 = unaff_s2 + 1;" (assignment_expression "unaff_s2 = unaff_s2 + 1" (identifier "unaff_s2") (= "=") (binary_expression "unaff_s2 + 1" (identifier "unaff_s2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar34[-0x78] = 0;" (assignment_expression "puVar34[-0x78] = 0" (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(puVar34 + -0x74) = pbVar23;" (assignment_expression "*(byte **)(puVar34 + -0x74) = pbVar23" (pointer_expression "*(byte **)(puVar34 + -0x74)" (* "*") (cast_expression "(byte **)(puVar34 + -0x74)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x74)" (( "(") (binary_expression "puVar34 + -0x74" (identifier "puVar34") (+ "+") (number_literal "-0x74")) () ")")))) (= "=") (identifier "pbVar23")) (; ";")) (if_statement "if (*(int *)(puVar34 + -0x104) == unaff_s2) {\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar34 + -0x104) == unaff_s2)" (( "(") (binary_expression "*(int *)(puVar34 + -0x104) == unaff_s2" (pointer_expression "*(int *)(puVar34 + -0x104)" (* "*") (cast_expression "(int *)(puVar34 + -0x104)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x104)" (( "(") (binary_expression "puVar34 + -0x104" (identifier "puVar34") (+ "+") (number_literal "-0x104")) () ")")))) (== "==") (identifier "unaff_s2")) () ")")) (compound_statement "{\n    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);\nLAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);\n    pbVar43 = (byte *)0x1;\n    iVar15 = *(int *)(puVar34 + -0x118);\n    goto LAB_0002db5c;\n  }" ({ "{") (expression_statement "**(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);" (assignment_expression "**(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac)" (pointer_expression "**(undefined4 **)(puVar34 + -0x110)" (* "*") (pointer_expression "*(undefined4 **)(puVar34 + -0x110)" (* "*") (cast_expression "(undefined4 **)(puVar34 + -0x110)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0x110)" (( "(") (binary_expression "puVar34 + -0x110" (identifier "puVar34") (+ "+") (number_literal "-0x110")) () ")"))))) (= "=") (pointer_expression "*(undefined4 *)(puVar34 + -0xac)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0xac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";")) (labeled_statement "LAB_0002db40:\n    (**(code **)(iVar15 + -0x7ca0))(param_1);" (statement_identifier "LAB_0002db40") (: ":") (expression_statement "(**(code **)(iVar15 + -0x7ca0))(param_1);" (call_expression "(**(code **)(iVar15 + -0x7ca0))(param_1)" (parenthesized_expression "(**(code **)(iVar15 + -0x7ca0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7ca0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7ca0)" (* "*") (cast_expression "(code **)(iVar15 + -0x7ca0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7ca0)" (( "(") (binary_expression "iVar15 + -0x7ca0" (identifier "iVar15") (+ "+") (number_literal "-0x7ca0")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";"))) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" (identifier "pbVar43") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar34 + -0x118);" (assignment_expression "iVar15 = *(int *)(puVar34 + -0x118)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar34 + -0x118)" (* "*") (cast_expression "(int *)(puVar34 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x118)" (( "(") (binary_expression "puVar34 + -0x118" (identifier "puVar34") (+ "+") (number_literal "-0x118")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002db5c;" (goto "goto") (statement_identifier "LAB_0002db5c") (; ";")) (} "}"))) (goto_statement "goto LAB_0002daa0;" (goto "goto") (statement_identifier "LAB_0002daa0") (; ";")) (labeled_statement "LAB_0002dd64:\n  pcVar30 = *(char **)(puVar34 + -0xac);" (statement_identifier "LAB_0002dd64") (: ":") (expression_statement "pcVar30 = *(char **)(puVar34 + -0xac);" (assignment_expression "pcVar30 = *(char **)(puVar34 + -0xac)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar34 + -0xac)" (* "*") (cast_expression "(char **)(puVar34 + -0xac)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")"))))) (; ";"))) (labeled_statement "LAB_0002dd68:\n  puVar34[-0xb0] = 0;" (statement_identifier "LAB_0002dd68") (: ":") (expression_statement "puVar34[-0xb0] = 0;" (assignment_expression "puVar34[-0xb0] = 0" (subscript_expression "puVar34[-0xb0]" (identifier "puVar34") ([ "[") (number_literal "-0xb0") (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));" (assignment_expression "pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8))" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(pcVar30 + *(int *)(puVar34 + -0xa8))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar30 + *(int *)(puVar34 + -0xa8))" (( "(") (binary_expression "pcVar30 + *(int *)(puVar34 + -0xa8)" (identifier "pcVar30") (+ "+") (pointer_expression "*(int *)(puVar34 + -0xa8)" (* "*") (cast_expression "(int *)(puVar34 + -0xa8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0xa8)" (( "(") (binary_expression "puVar34 + -0xa8" (identifier "puVar34") (+ "+") (number_literal "-0xa8")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(puVar34 + -0xac) = pbVar28;" (assignment_expression "*(byte **)(puVar34 + -0xac) = pbVar28" (pointer_expression "*(byte **)(puVar34 + -0xac)" (* "*") (cast_expression "(byte **)(puVar34 + -0xac)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar34 + -0xac)" (( "(") (binary_expression "puVar34 + -0xac" (identifier "puVar34") (+ "+") (number_literal "-0xac")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (labeled_statement "joined_r0x0002dea0:\n  pbVar23 = pbVar23 + -1;" (statement_identifier "joined_r0x0002dea0") (: ":") (expression_statement "pbVar23 = pbVar23 + -1;" (assignment_expression "pbVar23 = pbVar23 + -1" (identifier "pbVar23") (= "=") (binary_expression "pbVar23 + -1" (identifier "pbVar23") (+ "+") (number_literal "-1"))) (; ";"))) (if_statement "if (pbVar23 == (byte *)0x0) {\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }" (if "if") (parenthesized_expression "(pbVar23 == (byte *)0x0)" (( "(") (binary_expression "pbVar23 == (byte *)0x0" (identifier "pbVar23") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    cVar14 = puVar34[-0x78];\n    unaff_s2 = *(int *)(puVar34 + -0x108);\n    goto joined_r0x0002d9dc;\n  }" ({ "{") (expression_statement "cVar14 = puVar34[-0x78];" (assignment_expression "cVar14 = puVar34[-0x78]" (identifier "cVar14") (= "=") (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]"))) (; ";")) (expression_statement "unaff_s2 = *(int *)(puVar34 + -0x108);" (assignment_expression "unaff_s2 = *(int *)(puVar34 + -0x108)" (identifier "unaff_s2") (= "=") (pointer_expression "*(int *)(puVar34 + -0x108)" (* "*") (cast_expression "(int *)(puVar34 + -0x108)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x108)" (( "(") (binary_expression "puVar34 + -0x108" (identifier "puVar34") (+ "+") (number_literal "-0x108")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0002d9dc;" (goto "goto") (statement_identifier "joined_r0x0002d9dc") (; ";")) (} "}"))) (goto_statement "goto LAB_0002dd80;" (goto "goto") (statement_identifier "LAB_0002dd80") (; ";")) (labeled_statement "code_r0x0002def0:\n  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (statement_identifier "code_r0x0002def0") (: ":") (expression_statement "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x120")) () ")")))) (; ";"))) (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7bb0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7bb0)" (* "*") (cast_expression "(code **)(iVar15 + -0x7bb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7bb0)" (( "(") (binary_expression "iVar15 + -0x7bb0" (identifier "iVar15") (+ "+") (number_literal "-0x7bb0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x114" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x114")) (, ",") (identifier "pbVar6") (, ",") (number_literal "0xb3") (, ",") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0xd0")) () ")"))) (; ";")) (labeled_statement "LAB_0002df14:\n  puVar34[-0x6c] = 0;" (statement_identifier "LAB_0002df14") (: ":") (expression_statement "puVar34[-0x6c] = 0;" (assignment_expression "puVar34[-0x6c] = 0" (subscript_expression "puVar34[-0x6c]" (identifier "puVar34") ([ "[") (number_literal "-0x6c") (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined4 *)(puVar34 + -0x70) = 1;" (assignment_expression "*(undefined4 *)(puVar34 + -0x70) = 1" (pointer_expression "*(undefined4 *)(puVar34 + -0x70)" (* "*") (cast_expression "(undefined4 *)(puVar34 + -0x70)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar34 + -0x70)" (( "(") (binary_expression "puVar34 + -0x70" (identifier "puVar34") (+ "+") (number_literal "-0x70")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar34[-0x78] = 1;" (assignment_expression "puVar34[-0x78] = 1" (subscript_expression "puVar34[-0x78]" (identifier "puVar34") ([ "[") (number_literal "-0x78") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002d9f0;" (goto "goto") (statement_identifier "LAB_0002d9f0") (; ";")) (labeled_statement "LAB_0002e6c8:\n  iVar9 = *(int *)(puVar35 + -0xc4);" (statement_identifier "LAB_0002e6c8") (: ":") (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar35 + -0xc4)" (* "*") (cast_expression "(int *)(puVar35 + -0xc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")"))))) (; ";"))) (labeled_statement "LAB_0002e6cc:\n  unaff_s5 = *(byte **)(puVar35 + -0xc0);" (statement_identifier "LAB_0002e6cc") (: ":") (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" (identifier "unaff_s5") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xc0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xc0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")"))))) (; ";"))) (labeled_statement "LAB_0002e6d0:\n  pbVar29 = unaff_s5 + iVar9;" (statement_identifier "LAB_0002e6d0") (: ":") (expression_statement "pbVar29 = unaff_s5 + iVar9;" (assignment_expression "pbVar29 = unaff_s5 + iVar9" (identifier "pbVar29") (= "=") (binary_expression "unaff_s5 + iVar9" (identifier "unaff_s5") (+ "+") (identifier "iVar9"))) (; ";"))) (expression_statement "puVar35[-200] = 0;" (assignment_expression "puVar35[-200] = 0" (subscript_expression "puVar35[-200]" (identifier "puVar35") ([ "[") (number_literal "-200") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xc4) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xc4) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xc4)" (* "*") (cast_expression "(byte **)(puVar35 + -0xc4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (expression_statement "*(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;" (assignment_expression "*(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1" (pointer_expression "*(int *)(puVar35 + -0x160)" (* "*") (cast_expression "(int *)(puVar35 + -0x160)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x160)" (( "(") (binary_expression "puVar35 + -0x160" (identifier "puVar35") (+ "+") (number_literal "-0x160")) () ")")))) (= "=") (binary_expression "*(int *)(puVar35 + -0x160) + 1" (pointer_expression "*(int *)(puVar35 + -0x160)" (* "*") (cast_expression "(int *)(puVar35 + -0x160)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x160)" (( "(") (binary_expression "puVar35 + -0x160" (identifier "puVar35") (+ "+") (number_literal "-0x160")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;" (if "if") (parenthesized_expression "(puVar35[-0xd4] == '\0')" (( "(") (binary_expression "puVar35[-0xd4] == '\0'" (subscript_expression "puVar35[-0xd4]" (identifier "puVar35") ([ "[") (number_literal "-0xd4") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002e3c4;" (goto "goto") (statement_identifier "LAB_0002e3c4") (; ";"))) (goto_statement "goto LAB_0002e6f4;" (goto "goto") (statement_identifier "LAB_0002e6f4") (; ";")) (labeled_statement "LAB_0002ef34:\n  pbVar31 = *(byte **)(puVar35 + -0x148);" (statement_identifier "LAB_0002ef34") (: ":") (expression_statement "pbVar31 = *(byte **)(puVar35 + -0x148);" (assignment_expression "pbVar31 = *(byte **)(puVar35 + -0x148)" (identifier "pbVar31") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x148)" (* "*") (cast_expression "(byte **)(puVar35 + -0x148)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x148)" (( "(") (binary_expression "puVar35 + -0x148" (identifier "puVar35") (+ "+") (number_literal "-0x148")) () ")"))))) (; ";"))) (goto_statement "goto LAB_0002e2ac;" (goto "goto") (statement_identifier "LAB_0002e2ac") (; ";")) (labeled_statement "LAB_0002f210:\n  pbVar6 = (byte *)0xffffffff;" (statement_identifier "LAB_0002f210") (: ":") (expression_statement "pbVar6 = (byte *)0xffffffff;" (assignment_expression "pbVar6 = (byte *)0xffffffff" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0xffffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xffffffff"))) (; ";"))) (goto_statement "goto LAB_0002f060;" (goto "goto") (statement_identifier "LAB_0002f060") (; ";")) (labeled_statement "LAB_0002e098:\n  (**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);" (statement_identifier "LAB_0002e098") (: ":") (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7bb0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7bb0)" (* "*") (cast_expression "(code **)(iVar15 + -0x7bb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7bb0)" (( "(") (binary_expression "iVar15 + -0x7bb0" (identifier "iVar15") (+ "+") (number_literal "-0x7bb0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,\n             *(int *)(iVar15 + -0x7fc8) + -0xd0)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xe8" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0xe8")) (, ",") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x120")) (, ",") (number_literal "0xb2") (, ",") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0xd0")) () ")"))) (; ";"))) (labeled_statement "LAB_0002e0bc:\n  pbVar24 = &DAT_00000096;" (statement_identifier "LAB_0002e0bc") (: ":") (expression_statement "pbVar24 = &DAT_00000096;" (assignment_expression "pbVar24 = &DAT_00000096" (identifier "pbVar24") (= "=") (pointer_expression "&DAT_00000096" (& "&") (identifier "DAT_00000096"))) (; ";"))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7bb0);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7bb0)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x7bb0)" (* "*") (cast_expression "(code **)(iVar15 + -0x7bb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7bb0)" (( "(") (binary_expression "iVar15 + -0x7bb0" (identifier "iVar15") (+ "+") (number_literal "-0x7bb0")) () ")"))))) (; ";")) (expression_statement "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" (identifier "pbVar6") (= "=") (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x120")) () ")")))) (; ";")) (expression_statement "pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);" (assignment_expression "pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100)" (identifier "pbVar10") (= "=") (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x100)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x100")) () ")")))) (; ";")) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0002e0e0:\n  pcVar42 = mbsstr;" (statement_identifier "LAB_0002e0e0") (: ":") (expression_statement "pcVar42 = mbsstr;" (assignment_expression "pcVar42 = mbsstr" (identifier "pcVar42") (= "=") (identifier "mbsstr")) (; ";"))) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x47b00)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(pcVar33 + 0x47b00)" (* "*") (cast_expression "(undefined4 **)(pcVar33 + 0x47b00)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x47b00)" (( "(") (binary_expression "pcVar33 + 0x47b00" (identifier "pcVar33") (+ "+") (number_literal "0x47b00")) () ")"))))) (; ";")) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x47a80);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x47a80)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(pcVar33 + 0x47a80)" (* "*") (cast_expression "(code **)(pcVar33 + 0x47a80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x47a80)" (( "(") (binary_expression "pcVar33 + 0x47a80" (identifier "pcVar33") (+ "+") (number_literal "0x47a80")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(puVar35 + -0x154) = puVar8;" (assignment_expression "*(undefined4 **)(puVar35 + -0x154) = puVar8" (pointer_expression "*(undefined4 **)(puVar35 + -0x154)" (* "*") (cast_expression "(undefined4 **)(puVar35 + -0x154)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x154)" (( "(") (binary_expression "puVar35 + -0x154" (identifier "puVar35") (+ "+") (number_literal "-0x154")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;" (assignment_expression "*(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498" (pointer_expression "*(code **)(puVar35 + -0x170)" (* "*") (cast_expression "(code **)(puVar35 + -0x170)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")")))) (= "=") (binary_expression "pcVar33 + 0x4f498" (identifier "pcVar33") (+ "+") (number_literal "0x4f498"))) (; ";")) (expression_statement "*(undefined1 **)(puVar35 + -0x1c) = unaff_s3;" (assignment_expression "*(undefined1 **)(puVar35 + -0x1c) = unaff_s3" (pointer_expression "*(undefined1 **)(puVar35 + -0x1c)" (* "*") (cast_expression "(undefined1 **)(puVar35 + -0x1c)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1c)" (( "(") (binary_expression "puVar35 + -0x1c" (identifier "puVar35") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(int *)(puVar35 + -0x20) = unaff_s2;" (assignment_expression "*(int *)(puVar35 + -0x20) = unaff_s2" (pointer_expression "*(int *)(puVar35 + -0x20)" (* "*") (cast_expression "(int *)(puVar35 + -0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x20)" (( "(") (binary_expression "puVar35 + -0x20" (identifier "puVar35") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(code **)(puVar35 + -4) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -4) = pcVar42" (pointer_expression "*(code **)(puVar35 + -4)" (* "*") (cast_expression "(code **)(puVar35 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -4)" (( "(") (binary_expression "puVar35 + -4" (identifier "puVar35") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar42")) (; ";")) (expression_statement "*(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;" (assignment_expression "*(undefined1 **)(puVar35 + -8) = puVar34 + -0x128" (pointer_expression "*(undefined1 **)(puVar35 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar35 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -8)" (( "(") (binary_expression "puVar35 + -8" (identifier "puVar35") (+ "+") (number_literal "-8")) () ")")))) (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xc) = pbVar23;" (assignment_expression "*(byte **)(puVar35 + -0xc) = pbVar23" (pointer_expression "*(byte **)(puVar35 + -0xc)" (* "*") (cast_expression "(byte **)(puVar35 + -0xc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc)" (( "(") (binary_expression "puVar35 + -0xc" (identifier "puVar35") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x10) = unaff_s6;" (assignment_expression "*(byte **)(puVar35 + -0x10) = unaff_s6" (pointer_expression "*(byte **)(puVar35 + -0x10)" (* "*") (cast_expression "(byte **)(puVar35 + -0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x10)" (( "(") (binary_expression "puVar35 + -0x10" (identifier "puVar35") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x14) = unaff_s5;" (assignment_expression "*(byte **)(puVar35 + -0x14) = unaff_s5" (pointer_expression "*(byte **)(puVar35 + -0x14)" (* "*") (cast_expression "(byte **)(puVar35 + -0x14)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x14)" (( "(") (binary_expression "puVar35 + -0x14" (identifier "puVar35") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x18) = unaff_s4;" (assignment_expression "*(byte **)(puVar35 + -0x18) = unaff_s4" (pointer_expression "*(byte **)(puVar35 + -0x18)" (* "*") (cast_expression "(byte **)(puVar35 + -0x18)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x18)" (( "(") (binary_expression "puVar35 + -0x18" (identifier "puVar35") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x24) = pbVar28;" (assignment_expression "*(byte **)(puVar35 + -0x24) = pbVar28" (pointer_expression "*(byte **)(puVar35 + -0x24)" (* "*") (cast_expression "(byte **)(puVar35 + -0x24)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x24)" (( "(") (binary_expression "puVar35 + -0x24" (identifier "puVar35") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x28) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x28) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x28)" (* "*") (cast_expression "(byte **)(puVar35 + -0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x28)" (( "(") (binary_expression "puVar35 + -0x28" (identifier "puVar35") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x2c) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar35 + -0x2c) = *puVar8" (pointer_expression "*(undefined4 *)(puVar35 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x2c)" (( "(") (binary_expression "puVar35 + -0x2c" (identifier "puVar35") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" (identifier "pbVar43") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "uVar5 = (*pcVar40)();" (assignment_expression "uVar5 = (*pcVar40)()" (identifier "uVar5") (= "=") (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "pbVar31 = pbVar10;" (assignment_expression "pbVar31 = pbVar10" (identifier "pbVar31") (= "=") (identifier "pbVar10")) (; ";")) (if_statement "if (uVar5 < 2) {\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }\n  else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" (if "if") (parenthesized_expression "(uVar5 < 2)" (( "(") (binary_expression "uVar5 < 2" (identifier "uVar5") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    unaff_s6 = (byte *)(int)(char)*pbVar6;\n    pbVar29 = pbVar28;\n    puVar37 = puVar34 + -0x128;\n    if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }\nLAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);\n    puVar39 = puVar37;\n    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }\n  }" ({ "{") (expression_statement "unaff_s6 = (byte *)(int)(char)*pbVar6;" (assignment_expression "unaff_s6 = (byte *)(int)(char)*pbVar6" (identifier "unaff_s6") (= "=") (cast_expression "(byte *)(int)(char)*pbVar6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")))))) (; ";")) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" (identifier "pbVar29") (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" (identifier "puVar37") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (if_statement "if (unaff_s6 != (byte *)0x0) {\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }" (if "if") (parenthesized_expression "(unaff_s6 != (byte *)0x0)" (( "(") (binary_expression "unaff_s6 != (byte *)0x0" (identifier "unaff_s6") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pbVar29 = pbVar6 + 1;\n      puVar37 = puVar34 + -0x128;\n      if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }\nLAB_0002e2ec:\n      pbVar31 = (byte *)0x0;\n    }" ({ "{") (expression_statement "pbVar29 = pbVar6 + 1;" (assignment_expression "pbVar29 = pbVar6 + 1" (identifier "pbVar29") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar37 = puVar34 + -0x128;" (assignment_expression "puVar37 = puVar34 + -0x128" (identifier "puVar37") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (if_statement "if (*pbVar10 != 0) {\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }" (if "if") (parenthesized_expression "(*pbVar10 != 0)" (( "(") (binary_expression "*pbVar10 != 0" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pbVar23 = (byte *)0x0;\n        unaff_s5 = (byte *)0x0;\n        iVar9 = 1;\n        puVar37 = puVar35 + -0x148;\n        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);\n        pbVar28 = pbVar6;\n        pbVar26 = pbVar10;\n        pbVar4 = (byte *)0x0;\nLAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);\n      }" ({ "{") (expression_statement "pbVar23 = (byte *)0x0;" (assignment_expression "pbVar23 = (byte *)0x0" (identifier "pbVar23") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "unaff_s5 = (byte *)0x0;" (assignment_expression "unaff_s5 = (byte *)0x0" (identifier "unaff_s5") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar37 = puVar35 + -0x148;" (assignment_expression "puVar37 = puVar35 + -0x148" (identifier "puVar37") (= "=") (binary_expression "puVar35 + -0x148" (identifier "puVar35") (+ "+") (number_literal "-0x148"))) (; ";")) (expression_statement "param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);" (assignment_expression "param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80)" (identifier "param_1") (= "=") (cast_expression "(byte *)(*(int *)(iVar15 + -32000) + -0x2b80)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -32000) + -0x2b80)" (( "(") (binary_expression "*(int *)(iVar15 + -32000) + -0x2b80" (pointer_expression "*(int *)(iVar15 + -32000)" (* "*") (cast_expression "(int *)(iVar15 + -32000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -32000)" (( "(") (binary_expression "iVar15 + -32000" (identifier "iVar15") (+ "+") (number_literal "-32000")) () ")")))) (+ "+") (number_literal "-0x2b80")) () ")")))) (; ";")) (expression_statement "pbVar28 = pbVar6;" (assignment_expression "pbVar28 = pbVar6" (identifier "pbVar28") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar26 = pbVar10;" (assignment_expression "pbVar26 = pbVar10" (identifier "pbVar26") (= "=") (identifier "pbVar10")) (; ";")) (expression_statement "pbVar4 = (byte *)0x0;" (assignment_expression "pbVar4 = (byte *)0x0" (identifier "pbVar4") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0002e18c:\n        do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);" (statement_identifier "LAB_0002e18c") (: ":") (do_statement "do {\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        } while (pbVar31[1] != 0);" (do "do") (compound_statement "{\n          unaff_s4 = pbVar4;\n          pbVar31 = pbVar26;\n          pbVar10 = pbVar31;\n          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }\nLAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;\n          pbVar26 = pbVar31 + 1;\n          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }\n          pbVar4 = unaff_s4 + 1;\n        }" ({ "{") (expression_statement "unaff_s4 = pbVar4;" (assignment_expression "unaff_s4 = pbVar4" (identifier "unaff_s4") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "pbVar31 = pbVar26;" (assignment_expression "pbVar31 = pbVar26" (identifier "pbVar31") (= "=") (identifier "pbVar26")) (; ";")) (expression_statement "pbVar10 = pbVar31;" (assignment_expression "pbVar10 = pbVar31" (identifier "pbVar10") (= "=") (identifier "pbVar31")) (; ";")) (if_statement "if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }" (if "if") (parenthesized_expression "(((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4))" (( "(") (binary_expression "((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&\n             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)" (parenthesized_expression "((iVar9 != 0) && (&DAT_00000009 < unaff_s5))" (( "(") (binary_expression "(iVar9 != 0) && (&DAT_00000009 < unaff_s5)" (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(&DAT_00000009 < unaff_s5)" (( "(") (binary_expression "&DAT_00000009 < unaff_s5" (pointer_expression "&DAT_00000009" (& "&") (identifier "DAT_00000009")) (< "<") (identifier "unaff_s5")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((byte *)((int)unaff_s5 * 5) <= unaff_s4)" (( "(") (binary_expression "(byte *)((int)unaff_s5 * 5) <= unaff_s4" (cast_expression "(byte *)((int)unaff_s5 * 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s5 * 5)" (( "(") (binary_expression "(int)unaff_s5 * 5" (cast_expression "(int)unaff_s5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s5")) (* "*") (number_literal "5")) () ")"))) (<= "<=") (identifier "unaff_s4")) () ")"))) () ")")) (compound_statement "{\n            *(int *)(puVar35 + -0x168) = iVar9;\n            if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }\n            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);\n            pbVar43 = pbVar6;\n            iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            if (iVar9 != 0) goto LAB_0002ef34;\n            pbVar28 = (byte *)0x0;\n            iVar9 = 0;\n          }" ({ "{") (expression_statement "*(int *)(puVar35 + -0x168) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x168) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (pbVar28 != (byte *)0x0) {\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }" (if "if") (parenthesized_expression "(pbVar28 != (byte *)0x0)" (( "(") (binary_expression "pbVar28 != (byte *)0x0" (identifier "pbVar28") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              pcVar33 = *(code **)(iVar15 + -0x7af4);\n              pbVar43 = unaff_s4 + -(int)pbVar23;\n              *(byte **)(puVar35 + -0x164) = pbVar28;\n              iVar9 = (*pcVar33)(pbVar28);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);\n              iVar9 = *(int *)(puVar35 + -0x168);\n              pbVar23 = unaff_s4;\n              if (*pbVar28 != 0) goto LAB_0002e218;\n            }" ({ "{") (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7af4);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7af4)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x7af4)" (* "*") (cast_expression "(code **)(iVar15 + -0x7af4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7af4)" (( "(") (binary_expression "iVar15 + -0x7af4" (identifier "iVar15") (+ "+") (number_literal "-0x7af4")) () ")"))))) (; ";")) (expression_statement "pbVar43 = unaff_s4 + -(int)pbVar23;" (assignment_expression "pbVar43 = unaff_s4 + -(int)pbVar23" (identifier "pbVar43") (= "=") (binary_expression "unaff_s4 + -(int)pbVar23" (identifier "unaff_s4") (+ "+") (unary_expression "-(int)pbVar23" (- "-") (cast_expression "(int)pbVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar23"))))) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x164) = pbVar28;" (assignment_expression "*(byte **)(puVar35 + -0x164) = pbVar28" (pointer_expression "*(byte **)(puVar35 + -0x164)" (* "*") (cast_expression "(byte **)(puVar35 + -0x164)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")")))) (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(pbVar28);" (assignment_expression "iVar9 = (*pcVar33)(pbVar28)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(pbVar28)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(pbVar28)" (( "(") (identifier "pbVar28") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);" (assignment_expression "pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9)" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(*(int *)(puVar35 + -0x164) + iVar9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x164) + iVar9)" (( "(") (binary_expression "*(int *)(puVar35 + -0x164) + iVar9" (pointer_expression "*(int *)(puVar35 + -0x164)" (* "*") (cast_expression "(int *)(puVar35 + -0x164)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")")))) (+ "+") (identifier "iVar9")) () ")")))) (; ";")) (expression_statement "iVar9 = *(int *)(puVar35 + -0x168);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0x168)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")"))))) (; ";")) (expression_statement "pbVar23 = unaff_s4;" (assignment_expression "pbVar23 = unaff_s4" (identifier "pbVar23") (= "=") (identifier "unaff_s4")) (; ";")) (if_statement "if (*pbVar28 != 0) goto LAB_0002e218;" (if "if") (parenthesized_expression "(*pbVar28 != 0)" (( "(") (binary_expression "*pbVar28 != 0" (pointer_expression "*pbVar28" (* "*") (identifier "pbVar28")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e218;" (goto "goto") (statement_identifier "LAB_0002e218") (; ";"))) (} "}"))) (expression_statement "pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);" (assignment_expression "pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(iVar15 + -0x7a8c))(pbVar6)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(pbVar6)" (( "(") (identifier "pbVar6") () ")"))))) (; ";")) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" (identifier "pbVar43") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37);" (assignment_expression "iVar9 = FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37)" (identifier "iVar9") (= "=") (call_expression "FUN_0002d480(pbVar31,pbVar6,pbVar24,puVar37)" (identifier "FUN_0002d480") (argument_list "(pbVar31,pbVar6,pbVar24,puVar37)" (( "(") (identifier "pbVar31") (, ",") (identifier "pbVar6") (, ",") (identifier "pbVar24") (, ",") (identifier "puVar37") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) goto LAB_0002ef34;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002ef34;" (goto "goto") (statement_identifier "LAB_0002ef34") (; ";"))) (expression_statement "pbVar28 = (byte *)0x0;" (assignment_expression "pbVar28 = (byte *)0x0" (identifier "pbVar28") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (} "}"))) (labeled_statement "LAB_0002e218:\n          unaff_s5 = unaff_s5 + 1;" (statement_identifier "LAB_0002e218") (: ":") (expression_statement "unaff_s5 = unaff_s5 + 1;" (assignment_expression "unaff_s5 = unaff_s5 + 1" (identifier "unaff_s5") (= "=") (binary_expression "unaff_s5 + 1" (identifier "unaff_s5") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "pbVar26 = pbVar31 + 1;" (assignment_expression "pbVar26 = pbVar31 + 1" (identifier "pbVar26") (= "=") (binary_expression "pbVar31 + 1" (identifier "pbVar31") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((byte *)(int)(char)*pbVar31 == unaff_s6) {\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }" (if "if") (parenthesized_expression "((byte *)(int)(char)*pbVar31 == unaff_s6)" (( "(") (binary_expression "(byte *)(int)(char)*pbVar31 == unaff_s6" (cast_expression "(byte *)(int)(char)*pbVar31" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar31" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar31" (* "*") (identifier "pbVar31"))))) (== "==") (identifier "unaff_s6")) () ")")) (compound_statement "{\n            if (pbVar6[1] == 0) goto LAB_0002e2ac;\n            if (*pbVar26 == 0) break;\n            pbVar4 = unaff_s4 + 2;\n            if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }\n            goto LAB_0002e18c;\n          }" ({ "{") (if_statement "if (pbVar6[1] == 0) goto LAB_0002e2ac;" (if "if") (parenthesized_expression "(pbVar6[1] == 0)" (( "(") (binary_expression "pbVar6[1] == 0" (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e2ac;" (goto "goto") (statement_identifier "LAB_0002e2ac") (; ";"))) (if_statement "if (*pbVar26 == 0) break;" (if "if") (parenthesized_expression "(*pbVar26 == 0)" (( "(") (binary_expression "*pbVar26 == 0" (pointer_expression "*pbVar26" (* "*") (identifier "pbVar26")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar4 = unaff_s4 + 2;" (assignment_expression "pbVar4 = unaff_s4 + 2" (identifier "pbVar4") (= "=") (binary_expression "unaff_s4 + 2" (identifier "unaff_s4") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (pbVar6[1] == *pbVar26) {\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }" (if "if") (parenthesized_expression "(pbVar6[1] == *pbVar26)" (( "(") (binary_expression "pbVar6[1] == *pbVar26" (subscript_expression "pbVar6[1]" (identifier "pbVar6") ([ "[") (number_literal "1") (] "]")) (== "==") (pointer_expression "*pbVar26" (* "*") (identifier "pbVar26"))) () ")")) (compound_statement "{\n              pbVar17 = pbVar6 + 2;\n              pbVar21 = pbVar26;\n              do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);\n            }" ({ "{") (expression_statement "pbVar17 = pbVar6 + 2;" (assignment_expression "pbVar17 = pbVar6 + 2" (identifier "pbVar17") (= "=") (binary_expression "pbVar6 + 2" (identifier "pbVar6") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pbVar21 = pbVar26;" (assignment_expression "pbVar21 = pbVar26" (identifier "pbVar21") (= "=") (identifier "pbVar26")) (; ";")) (do_statement "do {\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              } while (pbVar43 == pbVar24);" (do "do") (compound_statement "{\n                pbVar43 = (byte *)(int)(char)*pbVar17;\n                pbVar21 = pbVar21 + 1;\n                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;\n                pbVar24 = (byte *)(int)(char)*pbVar21;\n                pbVar17 = pbVar17 + 1;\n                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;\n                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);\n              }" ({ "{") (expression_statement "pbVar43 = (byte *)(int)(char)*pbVar17;" (assignment_expression "pbVar43 = (byte *)(int)(char)*pbVar17" (identifier "pbVar43") (= "=") (cast_expression "(byte *)(int)(char)*pbVar17" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar17" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar17" (* "*") (identifier "pbVar17")))))) (; ";")) (expression_statement "pbVar21 = pbVar21 + 1;" (assignment_expression "pbVar21 = pbVar21 + 1" (identifier "pbVar21") (= "=") (binary_expression "pbVar21 + 1" (identifier "pbVar21") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;" (if "if") (parenthesized_expression "(pbVar43 == (byte *)0x0)" (( "(") (binary_expression "pbVar43 == (byte *)0x0" (identifier "pbVar43") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002e2ac;" (goto "goto") (statement_identifier "LAB_0002e2ac") (; ";"))) (expression_statement "pbVar24 = (byte *)(int)(char)*pbVar21;" (assignment_expression "pbVar24 = (byte *)(int)(char)*pbVar21" (identifier "pbVar24") (= "=") (cast_expression "(byte *)(int)(char)*pbVar21" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar21" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar21" (* "*") (identifier "pbVar21")))))) (; ";")) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" (identifier "pbVar17") (= "=") (binary_expression "pbVar17 + 1" (identifier "pbVar17") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;" (if "if") (parenthesized_expression "(pbVar24 == (byte *)0x0)" (( "(") (binary_expression "pbVar24 == (byte *)0x0" (identifier "pbVar24") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002e2ec;" (goto "goto") (statement_identifier "LAB_0002e2ec") (; ";"))) (expression_statement "pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);" (assignment_expression "pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6)" (identifier "pbVar4") (= "=") (binary_expression "unaff_s4 + ((int)pbVar17 - (int)pbVar6)" (identifier "unaff_s4") (+ "+") (parenthesized_expression "((int)pbVar17 - (int)pbVar6)" (( "(") (binary_expression "(int)pbVar17 - (int)pbVar6" (cast_expression "(int)pbVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar17")) (- "-") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar43 == pbVar24)" (( "(") (binary_expression "pbVar43 == pbVar24" (identifier "pbVar43") (== "==") (identifier "pbVar24")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_0002e18c;" (goto "goto") (statement_identifier "LAB_0002e18c") (; ";")) (} "}"))) (expression_statement "pbVar4 = unaff_s4 + 1;" (assignment_expression "pbVar4 = unaff_s4 + 1" (identifier "pbVar4") (= "=") (binary_expression "unaff_s4 + 1" (identifier "unaff_s4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar31[1] != 0)" (( "(") (binary_expression "pbVar31[1] != 0" (subscript_expression "pbVar31[1]" (identifier "pbVar31") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (; ";"))) (} "}"))) (labeled_statement "LAB_0002e2ec:\n      pbVar31 = (byte *)0x0;" (statement_identifier "LAB_0002e2ec") (: ":") (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" (identifier "pbVar31") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (} "}"))) (labeled_statement "LAB_0002e2ac:\n    pbVar28 = *(byte **)(puVar35 + -0x2c);" (statement_identifier "LAB_0002e2ac") (: ":") (expression_statement "pbVar28 = *(byte **)(puVar35 + -0x2c);" (assignment_expression "pbVar28 = *(byte **)(puVar35 + -0x2c)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x2c)" (* "*") (cast_expression "(byte **)(puVar35 + -0x2c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x2c)" (( "(") (binary_expression "puVar35 + -0x2c" (identifier "puVar35") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";"))) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {\n      return pbVar31;\n    }" (if "if") (parenthesized_expression "(pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154))" (( "(") (binary_expression "pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)" (identifier "pbVar28") (== "==") (cast_expression "(byte *)**(undefined4 **)(puVar35 + -0x154)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "**(undefined4 **)(puVar35 + -0x154)" (* "*") (pointer_expression "*(undefined4 **)(puVar35 + -0x154)" (* "*") (cast_expression "(undefined4 **)(puVar35 + -0x154)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x154)" (( "(") (binary_expression "puVar35 + -0x154" (identifier "puVar35") (+ "+") (number_literal "-0x154")) () ")"))))))) () ")")) (compound_statement "{\n      return pbVar31;\n    }" ({ "{") (return_statement "return pbVar31;" (return "return") (identifier "pbVar31") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" (else "else") (compound_statement "{\n    bVar20 = *pbVar6;\n    pbVar29 = (byte *)(int)(char)bVar20;\n    param_1 = puVar35 + -0x140;\n    iVar9 = *(int *)(iVar15 + -0x7c98);\n    *(undefined4 *)(puVar35 + -0x140) = 0;\n    pbVar43 = (byte *)(uint)bVar20;\n    *(undefined4 *)(puVar35 + -0x13c) = 0;\n    *(int *)(puVar35 + -0x168) = iVar9;\n    *(byte **)(puVar35 + -0x134) = pbVar6;\n    puVar35[-0x144] = 0;\n    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);\n    puVar35[-0x138] = 0;\n    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }\n    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);\n    iVar15 = *(int *)(puVar35 + -0x170);\n    pbVar29 = pbVar28;\n    if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }\nLAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);\n    puVar39 = puVar38;\nLAB_0002ef60:\n    pbVar24 = &DAT_000000b2;\n    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);\n    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);\n    (**(code **)(iVar15 + -0x7bb0))();\n  }" ({ "{") (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" (identifier "bVar20") (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (expression_statement "pbVar29 = (byte *)(int)(char)bVar20;" (assignment_expression "pbVar29 = (byte *)(int)(char)bVar20" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(int)(char)bVar20" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)bVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar20" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar20"))))) (; ";")) (expression_statement "param_1 = puVar35 + -0x140;" (assignment_expression "param_1 = puVar35 + -0x140" (identifier "param_1") (= "=") (binary_expression "puVar35 + -0x140" (identifier "puVar35") (+ "+") (number_literal "-0x140"))) (; ";")) (expression_statement "iVar9 = *(int *)(iVar15 + -0x7c98);" (assignment_expression "iVar9 = *(int *)(iVar15 + -0x7c98)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar15 + -0x7c98)" (* "*") (cast_expression "(int *)(iVar15 + -0x7c98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7c98)" (( "(") (binary_expression "iVar15 + -0x7c98" (identifier "iVar15") (+ "+") (number_literal "-0x7c98")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x140) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x140) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x140)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x140)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x140)" (( "(") (binary_expression "puVar35 + -0x140" (identifier "puVar35") (+ "+") (number_literal "-0x140")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar43 = (byte *)(uint)bVar20;" (assignment_expression "pbVar43 = (byte *)(uint)bVar20" (identifier "pbVar43") (= "=") (cast_expression "(byte *)(uint)bVar20" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar20")))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x13c) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x13c) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x13c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x13c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x13c)" (( "(") (binary_expression "puVar35 + -0x13c" (identifier "puVar35") (+ "+") (number_literal "-0x13c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar35 + -0x168) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x168) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x134) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x134) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x134)" (* "*") (cast_expression "(byte **)(puVar35 + -0x134)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x134)" (( "(") (binary_expression "puVar35 + -0x134" (identifier "puVar35") (+ "+") (number_literal "-0x134")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "puVar35[-0x144] = 0;" (assignment_expression "puVar35[-0x144] = 0" (subscript_expression "puVar35[-0x144]" (identifier "puVar35") ([ "[") (number_literal "-0x144") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" (* "*") (cast_expression "(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + (uint)(bVar20 >> 5) * 4)" (( "(") (binary_expression "iVar9 + (uint)(bVar20 >> 5) * 4" (identifier "iVar9") (+ "+") (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar20 >> 5)" (( "(") (binary_expression "bVar20 >> 5" (identifier "bVar20") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "puVar35[-0x138] = 0;" (assignment_expression "puVar35[-0x138] = 0" (subscript_expression "puVar35[-0x138]" (identifier "puVar35") ([ "[") (number_literal "-0x138") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }" (if "if") (parenthesized_expression "((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0" (parenthesized_expression "(uVar5 >> ((uint)pbVar43 & 0x1f) & 1)" (( "(") (binary_expression "uVar5 >> ((uint)pbVar43 & 0x1f) & 1" (binary_expression "uVar5 >> ((uint)pbVar43 & 0x1f)" (identifier "uVar5") (>> ">>") (parenthesized_expression "((uint)pbVar43 & 0x1f)" (( "(") (binary_expression "(uint)pbVar43 & 0x1f" (cast_expression "(uint)pbVar43" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar43")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(byte **)(puVar35 + -0x128) = pbVar29;\n      *(undefined4 *)(puVar35 + -0x130) = 1;\n      puVar35[-300] = 1;\n      puVar35[-0x138] = 1;\nLAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }\n      pbVar29 = (byte *)0x0;\n      goto LAB_0002e2ac;\n    }" ({ "{") (expression_statement "*(byte **)(puVar35 + -0x128) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x128) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x128)" (* "*") (cast_expression "(byte **)(puVar35 + -0x128)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x128)" (( "(") (binary_expression "puVar35 + -0x128" (identifier "puVar35") (+ "+") (number_literal "-0x128")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x130)" (( "(") (binary_expression "puVar35 + -0x130" (identifier "puVar35") (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-300] = 1;" (assignment_expression "puVar35[-300] = 1" (subscript_expression "puVar35[-300]" (identifier "puVar35") ([ "[") (number_literal "-300") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" (identifier "puVar35") ([ "[") (number_literal "-0x138") (] "]")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0002e2a0:\n      if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" (statement_identifier "LAB_0002e2a0") (: ":") (if_statement "if (pbVar29 != (byte *)0x0) {\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0002e360:\n        puVar35[-0xd4] = 0;\n        unaff_s4 = puVar35 + -0x108;\n        *(undefined4 *)(puVar35 + -0x108) = 0;\n        *(undefined4 *)(puVar35 + -0x15c) = 1;\n        puVar37 = puVar35 + -0xd0;\n        *(undefined4 *)(puVar35 + -0xd0) = 0;\n        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;\n        param_1 = (byte *)0x0;\n        iVar9 = *(int *)(iVar15 + -32000);\n        pbVar23 = puVar35 + -0x80;\n        *(undefined4 *)(puVar35 + -0x104) = 0;\n        *(undefined4 *)(puVar35 + -0xcc) = 0;\n        *(byte **)(puVar35 + -0xfc) = pbVar6;\n        *(undefined4 *)(puVar35 + -0x160) = 0;\n        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;\n        puVar35[-0x10c] = 0;\n        *(undefined4 *)(puVar35 + -0x150) = 0;\n        puVar35[-0x100] = 0;\n        *(byte **)(puVar35 + -0xc4) = pbVar10;\n        puVar35[-200] = 0;\n        pbVar29 = pbVar10;\n        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;\nLAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }\n        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);\n        iVar15 = *(int *)(puVar35 + -0x170);\n        puVar38 = puVar37;\n        if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }\n        goto LAB_0002ef3c;\n      }" ({ "{") (labeled_statement "LAB_0002e360:\n        puVar35[-0xd4] = 0;" (statement_identifier "LAB_0002e360") (: ":") (expression_statement "puVar35[-0xd4] = 0;" (assignment_expression "puVar35[-0xd4] = 0" (subscript_expression "puVar35[-0xd4]" (identifier "puVar35") ([ "[") (number_literal "-0xd4") (] "]")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "unaff_s4 = puVar35 + -0x108;" (assignment_expression "unaff_s4 = puVar35 + -0x108" (identifier "unaff_s4") (= "=") (binary_expression "puVar35 + -0x108" (identifier "puVar35") (+ "+") (number_literal "-0x108"))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x108) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x108) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x108)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x108)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x108)" (( "(") (binary_expression "puVar35 + -0x108" (identifier "puVar35") (+ "+") (number_literal "-0x108")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x15c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x15c)" (( "(") (binary_expression "puVar35 + -0x15c" (identifier "puVar35") (+ "+") (number_literal "-0x15c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar37 = puVar35 + -0xd0;" (assignment_expression "puVar37 = puVar35 + -0xd0" (identifier "puVar37") (= "=") (binary_expression "puVar35 + -0xd0" (identifier "puVar35") (+ "+") (number_literal "-0xd0"))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xd0) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0xd0) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0xd0)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xd0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xd0)" (( "(") (binary_expression "puVar35 + -0xd0" (identifier "puVar35") (+ "+") (number_literal "-0xd0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;" (assignment_expression "*(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4" (pointer_expression "*(undefined1 **)(puVar35 + -0x158)" (* "*") (cast_expression "(undefined1 **)(puVar35 + -0x158)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x158)" (( "(") (binary_expression "puVar35 + -0x158" (identifier "puVar35") (+ "+") (number_literal "-0x158")) () ")")))) (= "=") (binary_expression "puVar35 + -0xa4" (identifier "puVar35") (+ "+") (number_literal "-0xa4"))) (; ";")) (expression_statement "param_1 = (byte *)0x0;" (assignment_expression "param_1 = (byte *)0x0" (identifier "param_1") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar9 = *(int *)(iVar15 + -32000);" (assignment_expression "iVar9 = *(int *)(iVar15 + -32000)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar15 + -32000)" (* "*") (cast_expression "(int *)(iVar15 + -32000)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -32000)" (( "(") (binary_expression "iVar15 + -32000" (identifier "iVar15") (+ "+") (number_literal "-32000")) () ")"))))) (; ";")) (expression_statement "pbVar23 = puVar35 + -0x80;" (assignment_expression "pbVar23 = puVar35 + -0x80" (identifier "pbVar23") (= "=") (binary_expression "puVar35 + -0x80" (identifier "puVar35") (+ "+") (number_literal "-0x80"))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x104) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x104) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x104)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x104)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x104)" (( "(") (binary_expression "puVar35 + -0x104" (identifier "puVar35") (+ "+") (number_literal "-0x104")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xcc) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0xcc) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0xcc)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xcc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xcc)" (( "(") (binary_expression "puVar35 + -0xcc" (identifier "puVar35") (+ "+") (number_literal "-0xcc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xfc) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0xfc) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0xfc)" (* "*") (cast_expression "(byte **)(puVar35 + -0xfc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x160) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x160) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x160)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x160)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x160)" (( "(") (binary_expression "puVar35 + -0x160" (identifier "puVar35") (+ "+") (number_literal "-0x160")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;" (assignment_expression "*(int *)(puVar35 + -0x14c) = iVar9 + -0x2954" (pointer_expression "*(int *)(puVar35 + -0x14c)" (* "*") (cast_expression "(int *)(puVar35 + -0x14c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x14c)" (( "(") (binary_expression "puVar35 + -0x14c" (identifier "puVar35") (+ "+") (number_literal "-0x14c")) () ")")))) (= "=") (binary_expression "iVar9 + -0x2954" (identifier "iVar9") (+ "+") (number_literal "-0x2954"))) (; ";")) (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" (identifier "puVar35") ([ "[") (number_literal "-0x10c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x150) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x150) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x150)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x150)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x150)" (( "(") (binary_expression "puVar35 + -0x150" (identifier "puVar35") (+ "+") (number_literal "-0x150")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-0x100] = 0;" (assignment_expression "puVar35[-0x100] = 0" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xc4) = pbVar10;" (assignment_expression "*(byte **)(puVar35 + -0xc4) = pbVar10" (pointer_expression "*(byte **)(puVar35 + -0xc4)" (* "*") (cast_expression "(byte **)(puVar35 + -0xc4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")")))) (= "=") (identifier "pbVar10")) (; ";")) (expression_statement "puVar35[-200] = 0;" (assignment_expression "puVar35[-200] = 0" (subscript_expression "puVar35[-200]" (identifier "puVar35") ([ "[") (number_literal "-200") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar29 = pbVar10;" (assignment_expression "pbVar29 = pbVar10" (identifier "pbVar29") (= "=") (identifier "pbVar10")) (; ";")) (if_statement "if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;" (if "if") (parenthesized_expression "(puVar35[-0xd4] != '\0')" (( "(") (binary_expression "puVar35[-0xd4] != '\0'" (subscript_expression "puVar35[-0xd4]" (identifier "puVar35") ([ "[") (number_literal "-0xd4") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002e6f4;" (goto "goto") (statement_identifier "LAB_0002e6f4") (; ";"))) (labeled_statement "LAB_0002e3c4:\n        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" (statement_identifier "LAB_0002e3c4") (: ":") (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0) {\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)\n            & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (+ "+") (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar29 >> 5)" (( "(") (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*pbVar29 & 0x1f)" (( "(") (binary_expression "*pbVar29 & 0x1f" (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined4 *)(puVar35 + -0xc0) = 1;\n          pbVar29 = (byte *)(int)(char)*pbVar29;\n          puVar35[-0xbc] = 1;\n          puVar35[-200] = 1;\n          *(byte **)(puVar35 + -0xb8) = pbVar29;\n          goto LAB_0002e404;\n        }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xc0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(int)(char)*pbVar29" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar29" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")))))) (; ";")) (expression_statement "puVar35[-0xbc] = 1;" (assignment_expression "puVar35[-0xbc] = 1" (subscript_expression "puVar35[-0xbc]" (identifier "puVar35") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" (identifier "puVar35") ([ "[") (number_literal "-200") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xb8) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xb8) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xb8)" (* "*") (cast_expression "(byte **)(puVar35 + -0xb8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xb8)" (( "(") (binary_expression "puVar35 + -0xb8" (identifier "puVar35") (+ "+") (number_literal "-0xb8")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (goto_statement "goto LAB_0002e404;" (goto "goto") (statement_identifier "LAB_0002e404") (; ";")) (} "}")))) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(puVar37)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(puVar37)" (( "(") (identifier "puVar37") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" (identifier "puVar38") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (iVar9 != 0) {\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar35[-0xd4] = 1;\nLAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();\n          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n          pbVar43 = pbVar29;\n          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);\n          iVar15 = *(int *)(puVar35 + -0x170);\n          *(int *)(puVar35 + -0xc0) = iVar9;\n          if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }\n          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }\n          uVar5 = 0;\n          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }\nLAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;\n          do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );\n        }" ({ "{") (expression_statement "puVar35[-0xd4] = 1;" (assignment_expression "puVar35[-0xd4] = 1" (subscript_expression "puVar35[-0xd4]" (identifier "puVar35") ([ "[") (number_literal "-0xd4") (] "]")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0002e6f4:\n          uVar41 = (**(code **)(iVar15 + -0x7a18))();" (statement_identifier "LAB_0002e6f4") (: ":") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar29,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar29,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar29,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar29,uVar41)" (identifier "strnlen1") (argument_list "(pbVar29,uVar41)" (( "(") (identifier "pbVar29") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" (identifier "pbVar43") (= "=") (identifier "pbVar29")) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" (identifier "rpl_mbrtowc") (argument_list "(puVar35 + -0xb8,pbVar29,pbVar24,puVar37)" (( "(") (binary_expression "puVar35 + -0xb8" (identifier "puVar35") (+ "+") (number_literal "-0xb8")) (, ",") (identifier "pbVar29") (, ",") (identifier "pbVar24") (, ",") (identifier "puVar37") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0xc0) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xc0) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xc0)" (* "*") (cast_expression "(int *)(puVar35 + -0xc0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }\n          else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            puVar35[-0xbc] = 0;\n            *(undefined4 *)(puVar35 + -0xc0) = 1;\n            puVar35[-200] = 1;\n          }" ({ "{") (expression_statement "puVar35[-0xbc] = 0;" (assignment_expression "puVar35[-0xbc] = 0" (subscript_expression "puVar35[-0xbc]" (identifier "puVar35") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xc0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" (identifier "puVar35") ([ "[") (number_literal "-200") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" (else "else") (compound_statement "{\n            if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }\n            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(undefined4 *)(puVar35 + -0xc0) = uVar41;\n            puVar35[-0xbc] = 0;\n            puVar35[-200] = 1;\n          }" ({ "{") (if_statement "if (iVar9 != -2) {\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }" (if "if") (parenthesized_expression "(iVar9 != -2)" (( "(") (binary_expression "iVar9 != -2" (identifier "iVar9") (!= "!=") (number_literal "-2")) () ")")) (compound_statement "{\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s5 = (byte *)0x1;\n              puVar35[-0xbc] = 1;\n              iVar9 = (*pcVar33)(puVar37);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }\n              puVar35[-200] = 1;\nLAB_0002e404:\n              pbVar31 = (byte *)0x0;\n              if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }\n              goto LAB_0002e2ac;\n            }" ({ "{") (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined4 *)(puVar35 + -0xc0) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xc0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xb8);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xb8)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xb8)" (* "*") (cast_expression "(byte **)(puVar35 + -0xb8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xb8)" (( "(") (binary_expression "puVar35 + -0xb8" (identifier "puVar35") (+ "+") (number_literal "-0xb8")) () ")"))))) (; ";")) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;" (if "if") (parenthesized_expression "(**(char **)(puVar35 + -0xc4) != '\0')" (( "(") (binary_expression "**(char **)(puVar35 + -0xc4) != '\0'" (pointer_expression "**(char **)(puVar35 + -0xc4)" (* "*") (pointer_expression "*(char **)(puVar35 + -0xc4)" (* "*") (cast_expression "(char **)(puVar35 + -0xc4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ef60;" (goto "goto") (statement_identifier "LAB_0002ef60") (; ";"))) (if_statement "if (pbVar29 != (byte *)0x0) {\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0002ed10:\n                  FUN_0002d670();\nLAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);\n                  puVar35[-0x4c] = 0;\n                  *(undefined4 *)(puVar35 + -0x50) = 1;\n                  puVar37 = puVar39;\nLAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;\n                  puVar35[-0x58] = 0;\n                  unaff_s6 = puVar35 + -0x98;\n                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));\n                  *(byte **)(puVar35 + -0x54) = pbVar43;\n                  do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );\n                }" ({ "{") (labeled_statement "LAB_0002ed10:\n                  FUN_0002d670();" (statement_identifier "LAB_0002ed10") (: ":") (expression_statement "FUN_0002d670();" (call_expression "FUN_0002d670()" (identifier "FUN_0002d670") (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_0002ed18:\n                  pcVar30 = *(char **)(puVar35 + -0x54);" (statement_identifier "LAB_0002ed18") (: ":") (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar35 + -0x54)" (* "*") (cast_expression "(char **)(puVar35 + -0x54)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";"))) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" (identifier "puVar37") (= "=") (identifier "puVar39")) (; ";")) (labeled_statement "LAB_0002e51c:\n                  unaff_s5 = puVar35 + -0x48;" (statement_identifier "LAB_0002e51c") (: ":") (expression_statement "unaff_s5 = puVar35 + -0x48;" (assignment_expression "unaff_s5 = puVar35 + -0x48" (identifier "unaff_s5") (= "=") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48"))) (; ";"))) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "unaff_s6 = puVar35 + -0x98;" (assignment_expression "unaff_s6 = puVar35 + -0x98" (identifier "unaff_s6") (= "=") (binary_expression "puVar35 + -0x98" (identifier "puVar35") (+ "+") (number_literal "-0x98"))) (; ";")) (expression_statement "pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));" (assignment_expression "pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50))" (identifier "pbVar43") (= "=") (cast_expression "(byte *)(pcVar30 + *(int *)(puVar35 + -0x50))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar30 + *(int *)(puVar35 + -0x50))" (( "(") (binary_expression "pcVar30 + *(int *)(puVar35 + -0x50)" (identifier "pcVar30") (+ "+") (pointer_expression "*(int *)(puVar35 + -0x50)" (* "*") (cast_expression "(int *)(puVar35 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar43;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar43" (pointer_expression "*(byte **)(puVar35 + -0x54)" (* "*") (cast_expression "(byte **)(puVar35 + -0x54)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "pbVar43")) (; ";")) (do_statement "do {\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  } while( true );" (do "do") (compound_statement "{\n                    param_1 = param_1 + 1;\n                    puVar39 = puVar37;\n                    puVar38 = puVar37;\n                    if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }\n                    if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }\n                    if (bVar2) goto LAB_0002e6c8;\n                    puVar35[-0x90] = 0;\n                    puVar35[-0x58] = 0;\n                    *(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));\n                    *(byte **)(puVar35 + -0x54) = pbVar43;\n                  }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" (identifier "puVar38") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (puVar35[-100] == '\0') {\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }\n                    else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" (if "if") (parenthesized_expression "(puVar35[-100] == '\0')" (( "(") (binary_expression "puVar35[-100] == '\0'" (subscript_expression "puVar35[-100]" (identifier "puVar35") ([ "[") (number_literal "-100") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                      bVar20 = *pbVar43;\n                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }\n                      *(undefined4 *)(puVar35 + -0x50) = 1;\n                      pbVar29 = (byte *)(int)(char)*pbVar43;\n                      puVar35[-0x4c] = 1;\n                      puVar35[-0x58] = 1;\n                      *(byte **)(puVar35 + -0x48) = pbVar29;\n                      pbVar43 = (byte *)(uint)bVar20;\njoined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }\n                    }" ({ "{") (expression_statement "bVar20 = *pbVar43;" (assignment_expression "bVar20 = *pbVar43" (identifier "bVar20") (= "=") (pointer_expression "*pbVar43" (* "*") (identifier "pbVar43"))) (; ";")) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0) {\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>\n                           (bVar20 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (+ "+") (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar20 >> 5)" (( "(") (binary_expression "bVar20 >> 5" (identifier "bVar20") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar20 & 0x1f)" (( "(") (binary_expression "bVar20 & 0x1f" (identifier "bVar20") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        pbVar29 = pbVar43;\n                        if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }\n                        goto LAB_0002ef3c;\n                      }" ({ "{") (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164))" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x164)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "pbVar29 = pbVar43;" (assignment_expression "pbVar29 = pbVar43" (identifier "pbVar29") (= "=") (identifier "pbVar43")) (; ";")) (if_statement "if (iVar9 != 0) {\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          puVar35[-100] = 1;\n                          goto LAB_0002e630;\n                        }" ({ "{") (expression_statement "puVar35[-100] = 1;" (assignment_expression "puVar35[-100] = 1" (subscript_expression "puVar35[-100]" (identifier "puVar35") ([ "[") (number_literal "-100") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002e630;" (goto "goto") (statement_identifier "LAB_0002e630") (; ";")) (} "}"))) (goto_statement "goto LAB_0002ef3c;" (goto "goto") (statement_identifier "LAB_0002ef3c") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar43;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar43" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(int)(char)*pbVar43" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar43" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar43" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar43" (* "*") (identifier "pbVar43")))))) (; ";")) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x48) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x48) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" (* "*") (cast_expression "(byte **)(puVar35 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x48)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (expression_statement "pbVar43 = (byte *)(uint)bVar20;" (assignment_expression "pbVar43 = (byte *)(uint)bVar20" (identifier "pbVar43") (= "=") (cast_expression "(byte *)(uint)bVar20" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)bVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar20")))) (; ";")) (labeled_statement "joined_r0x0002e574:\n                      if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" (statement_identifier "joined_r0x0002e574") (: ":") (if_statement "if (pbVar29 == (byte *)0x0) {\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" (if "if") (parenthesized_expression "(pbVar29 == (byte *)0x0)" (( "(") (binary_expression "pbVar29 == (byte *)0x0" (identifier "pbVar29") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                        pbVar31 = *(byte **)(puVar35 + -0xc4);\n                        pbVar29 = (byte *)0x0;\n                        goto LAB_0002e2ac;\n                      }" ({ "{") (expression_statement "pbVar31 = *(byte **)(puVar35 + -0xc4);" (assignment_expression "pbVar31 = *(byte **)(puVar35 + -0xc4)" (identifier "pbVar31") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xc4)" (* "*") (cast_expression "(byte **)(puVar35 + -0xc4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")"))))) (; ";")) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" (identifier "pbVar29") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0002e2ac;" (goto "goto") (statement_identifier "LAB_0002e2ac") (; ";")) (} "}")))) (} "}")) (else_clause "else {\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" (else "else") (compound_statement "{\nLAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x50) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }\n                    }" ({ "{") (labeled_statement "LAB_0002e630:\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();" (statement_identifier "LAB_0002e630") (: ":") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar43,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar43,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar43,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar43,uVar41)" (identifier "strnlen1") (argument_list "(pbVar43,uVar41)" (( "(") (identifier "pbVar43") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         );" (assignment_expression "iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" (identifier "rpl_mbrtowc") (argument_list "(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)\n                                         )" (( "(") (identifier "unaff_s5") (, ",") (identifier "pbVar43") (, ",") (identifier "pbVar24") (, ",") (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x164)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0x50) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x50) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x50)" (* "*") (cast_expression "(int *)(puVar35 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                        puVar35[-0x4c] = 0;\n                        *(undefined4 *)(puVar35 + -0x50) = 1;\n                        puVar35[-0x58] = 1;\n                      }" ({ "{") (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" (else "else") (compound_statement "{\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                        puVar35[-0x4c] = 0;\n                        puVar35[-0x58] = 1;\n                      }" ({ "{") (if_statement "if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }" (if "if") (parenthesized_expression "(iVar9 != -2)" (( "(") (binary_expression "iVar9 != -2" (identifier "iVar9") (!= "!=") (number_literal "-2")) () ")")) (compound_statement "{\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x4c] = 1;\n                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }\n                          puVar35[-0x58] = 1;\n                          goto joined_r0x0002e574;\n                        }" ({ "{") (if_statement "if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                            *(undefined4 *)(puVar35 + -0x50) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x48)" (* "*") (cast_expression "(byte **)(puVar35 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x48)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (if_statement "if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;" (if "if") (parenthesized_expression "(**(char **)(puVar35 + -0x54) != '\0')" (( "(") (binary_expression "**(char **)(puVar35 + -0x54) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x54)" (* "*") (pointer_expression "*(char **)(puVar35 + -0x54)" (* "*") (cast_expression "(char **)(puVar35 + -0x54)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ef60;" (goto "goto") (statement_identifier "LAB_0002ef60") (; ";"))) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ed10;" (goto "goto") (statement_identifier "LAB_0002ed10") (; ";"))) (} "}")) (else_clause "else {\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" (else "else") (compound_statement "{\n                            pbVar29 = *(byte **)(puVar35 + -0x48);\n                          }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x48)" (* "*") (cast_expression "(byte **)(puVar35 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x48)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x164)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")")))) () ")")))) (; ";")) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" (identifier "pbVar43") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n                            puVar35[-100] = 0;\n                          }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                            puVar35[-100] = 0;\n                          }" ({ "{") (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" (identifier "puVar35") ([ "[") (number_literal "-100") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto joined_r0x0002e574;" (goto "goto") (statement_identifier "joined_r0x0002e574") (; ";")) (} "}"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54))" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x54))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x54)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")))) (if_statement "if (puVar35[-0x90] == '\0') {\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }\n                    else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" (if "if") (parenthesized_expression "(puVar35[-0x90] == '\0')" (( "(") (binary_expression "puVar35[-0x90] == '\0'" (subscript_expression "puVar35[-0x90]" (identifier "puVar35") ([ "[") (number_literal "-0x90") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                      pbVar29 = *(byte **)(puVar35 + -0x8c);\n                      if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }\n                      uVar41 = (**(code **)(iVar15 + -0x7a18))();\n                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);\n                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      *(int *)(puVar35 + -0x88) = iVar9;\n                      if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      pbVar43 = pbVar29;\nLAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);\n                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;\n                      pbVar43 = *(byte **)(puVar35 + -0x54);\n                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));\n                      iVar15 = *(int *)(puVar35 + -0x170);\n                      bVar2 = iVar9 != 0;\n                    }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x8c);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x8c)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x8c)" (* "*") (cast_expression "(byte **)(puVar35 + -0x8c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")"))))) (; ";")) (if_statement "if (puVar35[-0x9c] == '\0') {\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }" (if "if") (parenthesized_expression "(puVar35[-0x9c] == '\0')" (( "(") (binary_expression "puVar35[-0x9c] == '\0'" (subscript_expression "puVar35[-0x9c]" (identifier "puVar35") ([ "[") (number_literal "-0x9c") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                        pbVar43 = (byte *)(uint)*pbVar29;\n                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }\n                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        if (iVar9 == 0) goto LAB_0002ef3c;\n                        puVar35[-0x9c] = 1;\n                      }" ({ "{") (expression_statement "pbVar43 = (byte *)(uint)*pbVar29;" (assignment_expression "pbVar43 = (byte *)(uint)*pbVar29" (identifier "pbVar43") (= "=") (binary_expression "(byte *)(uint)*pbVar29" (cast_expression "(byte *)(uint)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (identifier "pbVar29"))) (; ";")) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0) {\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                             ((uint)pbVar43 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (+ "+") (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar29 >> 5)" (( "(") (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "((uint)pbVar43 & 0x1f)" (( "(") (binary_expression "(uint)pbVar43 & 0x1f" (cast_expression "(uint)pbVar43" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar43")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                          *(undefined4 *)(puVar35 + -0x88) = 1;\n                          pbVar29 = (byte *)(int)(char)*pbVar29;\n                          puVar35[-0x84] = 1;\n                          puVar35[-0x90] = 1;\n                          *(byte **)(puVar35 + -0x80) = pbVar29;\n                          goto LAB_0002e5d0;\n                        }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(int)(char)*pbVar29" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar29" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")))))) (; ";")) (expression_statement "puVar35[-0x84] = 1;" (assignment_expression "puVar35[-0x84] = 1" (subscript_expression "puVar35[-0x84]" (identifier "puVar35") ([ "[") (number_literal "-0x84") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" (identifier "puVar35") ([ "[") (number_literal "-0x90") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x80) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x80) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x80)" (* "*") (cast_expression "(byte **)(puVar35 + -0x80)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x80)" (( "(") (binary_expression "puVar35 + -0x80" (identifier "puVar35") (+ "+") (number_literal "-0x80")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (goto_statement "goto LAB_0002e5d0;" (goto "goto") (statement_identifier "LAB_0002e5d0") (; ";")) (} "}"))) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s6)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) goto LAB_0002ef3c;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002ef3c;" (goto "goto") (statement_identifier "LAB_0002ef3c") (; ";"))) (expression_statement "puVar35[-0x9c] = 1;" (assignment_expression "puVar35[-0x9c] = 1" (subscript_expression "puVar35[-0x9c]" (identifier "puVar35") ([ "[") (number_literal "-0x9c") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar29,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar29,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar29,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar29,uVar41)" (identifier "strnlen1") (argument_list "(pbVar29,uVar41)" (( "(") (identifier "pbVar29") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);" (assignment_expression "iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6)" (identifier "rpl_mbrtowc") (argument_list "(pbVar23,pbVar29,pbVar24,unaff_s6)" (( "(") (identifier "pbVar23") (, ",") (identifier "pbVar29") (, ",") (identifier "pbVar24") (, ",") (identifier "unaff_s6") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0x88) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x88) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x88)" (* "*") (cast_expression "(int *)(puVar35 + -0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }\n                      else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                        puVar35[-0x84] = 0;\n                        *(undefined4 *)(puVar35 + -0x88) = 1;\n                        puVar35[-0x90] = 1;\n                      }" ({ "{") (expression_statement "puVar35[-0x84] = 0;" (assignment_expression "puVar35[-0x84] = 0" (subscript_expression "puVar35[-0x84]" (identifier "puVar35") ([ "[") (number_literal "-0x84") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" (identifier "puVar35") ([ "[") (number_literal "-0x90") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" (else "else") (compound_statement "{\n                        if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }\n                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));\n                        iVar15 = *(int *)(puVar35 + -0x170);\n                        *(undefined4 *)(puVar35 + -0x88) = uVar41;\n                        puVar35[-0x84] = 0;\n                        puVar35[-0x90] = 1;\n                      }" ({ "{") (if_statement "if (iVar9 != -2) {\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }" (if "if") (parenthesized_expression "(iVar9 != -2)" (( "(") (binary_expression "iVar9 != -2" (identifier "iVar9") (!= "!=") (number_literal "-2")) () ")")) (compound_statement "{\n                          if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }\n                          pcVar33 = *(code **)(iVar15 + -0x799c);\n                          puVar35[-0x84] = 1;\n                          iVar9 = (*pcVar33)(unaff_s6);\n                          pbVar43 = (byte *)0x1;\n                          iVar15 = *(int *)(puVar35 + -0x170);\n                          if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }\n                          puVar35[-0x90] = 1;\n                          goto LAB_0002e5d0;\n                        }" ({ "{") (if_statement "if (iVar9 == 0) {\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }\n                          else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                            *(undefined4 *)(puVar35 + -0x88) = 1;\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;\n                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                          }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0x88) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x80)" (* "*") (cast_expression "(byte **)(puVar35 + -0x80)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x80)" (( "(") (binary_expression "puVar35 + -0x80" (identifier "puVar35") (+ "+") (number_literal "-0x80")) () ")"))))) (; ";")) (if_statement "if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;" (if "if") (parenthesized_expression "(**(char **)(puVar35 + -0x8c) != '\0')" (( "(") (binary_expression "**(char **)(puVar35 + -0x8c) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x8c)" (* "*") (pointer_expression "*(char **)(puVar35 + -0x8c)" (* "*") (cast_expression "(char **)(puVar35 + -0x8c)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ef60;" (goto "goto") (statement_identifier "LAB_0002ef60") (; ";"))) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ed10;" (goto "goto") (statement_identifier "LAB_0002ed10") (; ";"))) (} "}")) (else_clause "else {\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" (else "else") (compound_statement "{\n                            pbVar29 = *(byte **)(puVar35 + -0x80);\n                          }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x80)" (* "*") (cast_expression "(byte **)(puVar35 + -0x80)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x80)" (( "(") (binary_expression "puVar35 + -0x80" (identifier "puVar35") (+ "+") (number_literal "-0x80")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "puVar35[-0x84] = 1;" (assignment_expression "puVar35[-0x84] = 1" (subscript_expression "puVar35[-0x84]" (identifier "puVar35") ([ "[") (number_literal "-0x84") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(unaff_s6);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s6)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s6)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s6)" (( "(") (identifier "unaff_s6") () ")")))) (; ";")) (expression_statement "pbVar43 = (byte *)0x1;" (assignment_expression "pbVar43 = (byte *)0x1" (identifier "pbVar43") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n                            puVar35[-0x9c] = 0;\n                          }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                            puVar35[-0x9c] = 0;\n                          }" ({ "{") (expression_statement "puVar35[-0x9c] = 0;" (assignment_expression "puVar35[-0x9c] = 0" (subscript_expression "puVar35[-0x9c]" (identifier "puVar35") ([ "[") (number_literal "-0x9c") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" (identifier "puVar35") ([ "[") (number_literal "-0x90") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002e5d0;" (goto "goto") (statement_identifier "LAB_0002e5d0") (; ";")) (} "}"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c))" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x8c))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x8c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x8c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x88) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x88) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x88)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x88)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar35[-0x84] = 0;" (assignment_expression "puVar35[-0x84] = 0" (subscript_expression "puVar35[-0x84]" (identifier "puVar35") ([ "[") (number_literal "-0x84") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-0x90] = 1;" (assignment_expression "puVar35[-0x90] = 1" (subscript_expression "puVar35[-0x90]" (identifier "puVar35") ([ "[") (number_literal "-0x90") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" (identifier "pbVar24") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x88)" (* "*") (cast_expression "(byte **)(puVar35 + -0x88)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")"))))) (; ";")) (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" (identifier "pbVar43") (= "=") (identifier "pbVar29")) (; ";")) (labeled_statement "LAB_0002e794:\n                      iVar9 = *(int *)(puVar35 + -0xc4);" (statement_identifier "LAB_0002e794") (: ":") (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar35 + -0xc4)" (* "*") (cast_expression "(int *)(puVar35 + -0xc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")"))))) (; ";"))) (if_statement "if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;" (if "if") (parenthesized_expression "(pbVar24 != *(byte **)(puVar35 + -0x50))" (( "(") (binary_expression "pbVar24 != *(byte **)(puVar35 + -0x50)" (identifier "pbVar24") (!= "!=") (pointer_expression "*(byte **)(puVar35 + -0x50)" (* "*") (cast_expression "(byte **)(puVar35 + -0x50)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")"))))) () ")")) (goto_statement "goto LAB_0002e6cc;" (goto "goto") (statement_identifier "LAB_0002e6cc") (; ";"))) (expression_statement "pbVar43 = *(byte **)(puVar35 + -0x54);" (assignment_expression "pbVar43 = *(byte **)(puVar35 + -0x54)" (identifier "pbVar43") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x54)" (* "*") (cast_expression "(byte **)(puVar35 + -0x54)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c))" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c))" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x79c0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x79c0)" (* "*") (cast_expression "(code **)(iVar15 + -0x79c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79c0)" (( "(") (binary_expression "iVar15 + -0x79c0" (identifier "iVar15") (+ "+") (number_literal "-0x79c0")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x8c))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x8c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x8c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "bVar2 = iVar9 != 0;" (assignment_expression "bVar2 = iVar9 != 0" (identifier "bVar2") (= "=") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0"))) (; ";")) (} "}")) (else_clause "else {\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" (else "else") (compound_statement "{\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;\n                      pbVar29 = *(byte **)(puVar35 + -0x80);\nLAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;\n                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;\n                      pbVar24 = *(byte **)(puVar35 + -0x88);\n                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;\n                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;\n                    }" ({ "{") (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" (identifier "pbVar24") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x88)" (* "*") (cast_expression "(byte **)(puVar35 + -0x88)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")"))))) (; ";")) (if_statement "if (puVar35[-0x84] == '\0') goto LAB_0002e794;" (if "if") (parenthesized_expression "(puVar35[-0x84] == '\0')" (( "(") (binary_expression "puVar35[-0x84] == '\0'" (subscript_expression "puVar35[-0x84]" (identifier "puVar35") ([ "[") (number_literal "-0x84") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002e794;" (goto "goto") (statement_identifier "LAB_0002e794") (; ";"))) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x80);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x80)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x80)" (* "*") (cast_expression "(byte **)(puVar35 + -0x80)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x80)" (( "(") (binary_expression "puVar35 + -0x80" (identifier "puVar35") (+ "+") (number_literal "-0x80")) () ")"))))) (; ";")) (labeled_statement "LAB_0002e5d0:\n                      pbVar31 = (byte *)0x0;" (statement_identifier "LAB_0002e5d0") (: ":") (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" (identifier "pbVar31") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (if_statement "if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;" (if "if") (parenthesized_expression "(pbVar29 == (byte *)0x0)" (( "(") (binary_expression "pbVar29 == (byte *)0x0" (identifier "pbVar29") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002e2ac;" (goto "goto") (statement_identifier "LAB_0002e2ac") (; ";"))) (expression_statement "pbVar24 = *(byte **)(puVar35 + -0x88);" (assignment_expression "pbVar24 = *(byte **)(puVar35 + -0x88)" (identifier "pbVar24") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x88)" (* "*") (cast_expression "(byte **)(puVar35 + -0x88)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")"))))) (; ";")) (if_statement "if (puVar35[-0x4c] == '\0') goto LAB_0002e794;" (if "if") (parenthesized_expression "(puVar35[-0x4c] == '\0')" (( "(") (binary_expression "puVar35[-0x4c] == '\0'" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002e794;" (goto "goto") (statement_identifier "LAB_0002e794") (; ";"))) (expression_statement "bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;" (assignment_expression "bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29" (identifier "bVar2") (= "=") (binary_expression "*(byte **)(puVar35 + -0x48) != pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" (* "*") (cast_expression "(byte **)(puVar35 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x48)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) () ")")))) (!= "!=") (identifier "pbVar29"))) (; ";")) (} "}")))) (if_statement "if (bVar2) goto LAB_0002e6c8;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (goto_statement "goto LAB_0002e6c8;" (goto "goto") (statement_identifier "LAB_0002e6c8") (; ";"))) (expression_statement "puVar35[-0x90] = 0;" (assignment_expression "puVar35[-0x90] = 0" (subscript_expression "puVar35[-0x90]" (identifier "puVar35") ([ "[") (number_literal "-0x90") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);" (assignment_expression "*(int *)(puVar35 + -0x8c) =\n                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" (* "*") (cast_expression "(int *)(puVar35 + -0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")")))) (= "=") (binary_expression "*(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" (* "*") (cast_expression "(int *)(puVar35 + -0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")")))) (+ "+") (pointer_expression "*(int *)(puVar35 + -0x88)" (* "*") (cast_expression "(int *)(puVar35 + -0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")")))))) (; ";")) (expression_statement "pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));" (assignment_expression "pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" (identifier "pbVar43") (= "=") (cast_expression "(byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50))" (( "(") (binary_expression "*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50)" (pointer_expression "*(int *)(puVar35 + -0x54)" (* "*") (cast_expression "(int *)(puVar35 + -0x54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")")))) (+ "+") (pointer_expression "*(int *)(puVar35 + -0x50)" (* "*") (cast_expression "(int *)(puVar35 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar43;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar43" (pointer_expression "*(byte **)(puVar35 + -0x54)" (* "*") (cast_expression "(byte **)(puVar35 + -0x54)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "pbVar43")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" (else "else") (compound_statement "{\n                pbVar29 = *(byte **)(puVar35 + -0xb8);\n              }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xb8);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xb8)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xb8)" (* "*") (cast_expression "(byte **)(puVar35 + -0xb8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xb8)" (( "(") (binary_expression "puVar35 + -0xb8" (identifier "puVar35") (+ "+") (number_literal "-0xb8")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" (identifier "unaff_s5") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar35[-0xbc] = 1;" (assignment_expression "puVar35[-0xbc] = 1" (subscript_expression "puVar35[-0xbc]" (identifier "puVar35") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(puVar37);" (assignment_expression "iVar9 = (*pcVar33)(puVar37)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(puVar37)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(puVar37)" (( "(") (identifier "puVar37") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n                puVar35[-0xd4] = 0;\n              }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                puVar35[-0xd4] = 0;\n              }" ({ "{") (expression_statement "puVar35[-0xd4] = 0;" (assignment_expression "puVar35[-0xd4] = 0" (subscript_expression "puVar35[-0xd4]" (identifier "puVar35") ([ "[") (number_literal "-0xd4") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" (identifier "puVar35") ([ "[") (number_literal "-200") (] "]")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0002e404:\n              pbVar31 = (byte *)0x0;" (statement_identifier "LAB_0002e404") (: ":") (expression_statement "pbVar31 = (byte *)0x0;" (assignment_expression "pbVar31 = (byte *)0x0" (identifier "pbVar31") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (if_statement "if (pbVar29 != (byte *)0x0) {\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }\n                uVar5 = *(uint *)(puVar35 + -0x15c);\n                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;\n                goto LAB_0002e438;\n              }" ({ "{") (if_statement "if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }" (if "if") (parenthesized_expression "((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10))" (( "(") (binary_expression "(*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)" (parenthesized_expression "(*(int *)(puVar35 + -0x15c) == 0)" (( "(") (binary_expression "*(int *)(puVar35 + -0x15c) == 0" (pointer_expression "*(int *)(puVar35 + -0x15c)" (* "*") (cast_expression "(int *)(puVar35 + -0x15c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x15c)" (( "(") (binary_expression "puVar35 + -0x15c" (identifier "puVar35") (+ "+") (number_literal "-0x15c")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(uint *)(puVar35 + -0x160) < 10)" (( "(") (binary_expression "*(uint *)(puVar35 + -0x160) < 10" (pointer_expression "*(uint *)(puVar35 + -0x160)" (* "*") (cast_expression "(uint *)(puVar35 + -0x160)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x160)" (( "(") (binary_expression "puVar35 + -0x160" (identifier "puVar35") (+ "+") (number_literal "-0x160")) () ")")))) (< "<") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n                  param_1 = param_1 + 1;\n                  goto LAB_0002e448;\n                }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0002e448;" (goto "goto") (statement_identifier "LAB_0002e448") (; ";")) (} "}"))) (expression_statement "uVar5 = *(uint *)(puVar35 + -0x15c);" (assignment_expression "uVar5 = *(uint *)(puVar35 + -0x15c)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(puVar35 + -0x15c)" (* "*") (cast_expression "(uint *)(puVar35 + -0x15c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x15c)" (( "(") (binary_expression "puVar35 + -0x15c" (identifier "puVar35") (+ "+") (number_literal "-0x15c")) () ")"))))) (; ";")) (if_statement "if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;" (if "if") (parenthesized_expression "((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1)" (( "(") (binary_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1" (cast_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x160) * 5)" (( "(") (binary_expression "*(int *)(puVar35 + -0x160) * 5" (pointer_expression "*(int *)(puVar35 + -0x160)" (* "*") (cast_expression "(int *)(puVar35 + -0x160)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x160)" (( "(") (binary_expression "puVar35 + -0x160" (identifier "puVar35") (+ "+") (number_literal "-0x160")) () ")")))) (* "*") (number_literal "5")) () ")"))) (<= "<=") (identifier "param_1")) () ")")) (goto_statement "goto LAB_0002e9c8;" (goto "goto") (statement_identifier "LAB_0002e9c8") (; ";"))) (goto_statement "goto LAB_0002e438;" (goto "goto") (statement_identifier "LAB_0002e438") (; ";")) (} "}"))) (goto_statement "goto LAB_0002e2ac;" (goto "goto") (statement_identifier "LAB_0002e2ac") (; ";")) (} "}"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4))" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0xc4))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0xc4)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xc4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xc0) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xc0) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xc0)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xc0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar35[-0xbc] = 0;" (assignment_expression "puVar35[-0xbc] = 0" (subscript_expression "puVar35[-0xbc]" (identifier "puVar35") ([ "[") (number_literal "-0xbc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-200] = 1;" (assignment_expression "puVar35[-200] = 1" (subscript_expression "puVar35[-200]" (identifier "puVar35") ([ "[") (number_literal "-200") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }" (if "if") (parenthesized_expression "((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10))" (( "(") (binary_expression "(*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)" (parenthesized_expression "(*(int *)(puVar35 + -0x15c) == 0)" (( "(") (binary_expression "*(int *)(puVar35 + -0x15c) == 0" (pointer_expression "*(int *)(puVar35 + -0x15c)" (* "*") (cast_expression "(int *)(puVar35 + -0x15c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x15c)" (( "(") (binary_expression "puVar35 + -0x15c" (identifier "puVar35") (+ "+") (number_literal "-0x15c")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(uint *)(puVar35 + -0x160) < 10)" (( "(") (binary_expression "*(uint *)(puVar35 + -0x160) < 10" (pointer_expression "*(uint *)(puVar35 + -0x160)" (* "*") (cast_expression "(uint *)(puVar35 + -0x160)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x160)" (( "(") (binary_expression "puVar35 + -0x160" (identifier "puVar35") (+ "+") (number_literal "-0x160")) () ")")))) (< "<") (number_literal "10")) () ")"))) () ")")) (compound_statement "{\n            param_1 = param_1 + 1;\n            goto LAB_0002e898;\n          }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0002e898;" (goto "goto") (statement_identifier "LAB_0002e898") (; ";")) (} "}"))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }" (if "if") (parenthesized_expression "((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1)" (( "(") (binary_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1" (cast_expression "(byte *)(*(int *)(puVar35 + -0x160) * 5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x160) * 5)" (( "(") (binary_expression "*(int *)(puVar35 + -0x160) * 5" (pointer_expression "*(int *)(puVar35 + -0x160)" (* "*") (cast_expression "(int *)(puVar35 + -0x160)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x160)" (( "(") (binary_expression "puVar35 + -0x160" (identifier "puVar35") (+ "+") (number_literal "-0x160")) () ")")))) (* "*") (number_literal "5")) () ")"))) (<= "<=") (identifier "param_1")) () ")")) (compound_statement "{\nLAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);\n            if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }\n            if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }\n            pbVar29 = *(byte **)(puVar35 + -0xfc);\n            goto LAB_0002ea08;\n          }" ({ "{") (labeled_statement "LAB_0002e9c8:\n            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);" (statement_identifier "LAB_0002e9c8") (: ":") (expression_statement "unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);" (assignment_expression "unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150)" (identifier "unaff_s5") (= "=") (binary_expression "param_1 + -*(int *)(puVar35 + -0x150)" (identifier "param_1") (+ "+") (unary_expression "-*(int *)(puVar35 + -0x150)" (- "-") (pointer_expression "*(int *)(puVar35 + -0x150)" (* "*") (cast_expression "(int *)(puVar35 + -0x150)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x150)" (( "(") (binary_expression "puVar35 + -0x150" (identifier "puVar35") (+ "+") (number_literal "-0x150")) () ")"))))))) (; ";"))) (if_statement "if (unaff_s5 == (byte *)0x0) {\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }" (if "if") (parenthesized_expression "(unaff_s5 == (byte *)0x0)" (( "(") (binary_expression "unaff_s5 == (byte *)0x0" (identifier "unaff_s5") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;\n              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              goto LAB_0002ed78;\n            }" ({ "{") (if_statement "if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;" (if "if") (parenthesized_expression "(puVar35[-0x100] == '\0')" (( "(") (binary_expression "puVar35[-0x100] == '\0'" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ed2c;" (goto "goto") (statement_identifier "LAB_0002ed2c") (; ";"))) (if_statement "if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;" (if "if") (parenthesized_expression "(puVar35[-0xf4] == '\0')" (( "(") (binary_expression "puVar35[-0xf4] == '\0'" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ed84;" (goto "goto") (statement_identifier "LAB_0002ed84") (; ";"))) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002ed78;" (goto "goto") (statement_identifier "LAB_0002ed78") (; ";")) (} "}"))) (if_statement "if (puVar35[-0x100] != '\0') {\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }" (if "if") (parenthesized_expression "(puVar35[-0x100] != '\0')" (( "(") (binary_expression "puVar35[-0x100] != '\0'" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              pbVar29 = *(byte **)(puVar35 + -0xf0);\n              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;\n              goto LAB_0002e9e8;\n            }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (if_statement "if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;" (if "if") (parenthesized_expression "(puVar35[-0xf4] != '\0')" (( "(") (binary_expression "puVar35[-0xf4] != '\0'" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ea50;" (goto "goto") (statement_identifier "LAB_0002ea50") (; ";"))) (goto_statement "goto LAB_0002e9e8;" (goto "goto") (statement_identifier "LAB_0002e9e8") (; ";")) (} "}"))) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xfc);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xfc)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xfc)" (* "*") (cast_expression "(byte **)(puVar35 + -0xfc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002ea08;" (goto "goto") (statement_identifier "LAB_0002ea08") (; ";")) (} "}"))) (labeled_statement "LAB_0002e438:\n          *(undefined4 *)(puVar35 + -0x15c) = 1;" (statement_identifier "LAB_0002e438") (: ":") (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x15c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x15c)" (( "(") (binary_expression "puVar35 + -0x15c" (identifier "puVar35") (+ "+") (number_literal "-0x15c")) () ")")))) (= "=") (number_literal "1")) (; ";"))) (do_statement "do {\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          } while( true );" (do "do") (compound_statement "{\n            param_1 = param_1 + 1;\n            if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }\n            puVar8 = (undefined4 *)(puVar35 + -0xd4);\n            puVar3 = (undefined4 *)(puVar35 + -0x9c);\n            do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);\n            bVar20 = *pbVar6;\n            pbVar29 = (byte *)(int)(char)bVar20;\n            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;\n            pbVar24 = (byte *)*puVar22;\n            puVar18[5] = puVar22[1];\n            puVar18[4] = pbVar24;\n            puVar35[-0x90] = 0;\n            *(byte **)(puVar35 + -0x54) = pbVar6;\n            puVar35[-100] = 0;\n            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);\n            *(undefined4 *)(puVar35 + -0x60) = 0;\n            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);\n            *(undefined4 *)(puVar35 + -0x5c) = 0;\n            puVar35[-0x58] = 0;\n            puVar37 = puVar39;\n            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }\n            if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }\n            pcVar33 = *(code **)(iVar15 + -0x7b80);\n            (*pcVar33)();\n            pbVar29 = (byte *)0x0;\nLAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            puVar38 = puVar39;\n            if (iVar9 == 0) break;\n            puVar35[-0x10c] = 1;\n            puVar37 = puVar39;\nLAB_0002eb98:\n            pbVar43 = pbVar29;\n            uVar41 = (**(code **)(iVar15 + -0x7a18))();\n            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);\n            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);\n            iVar15 = *(int *)(puVar35 + -0x170);\n            *(int *)(puVar35 + -0xf8) = iVar9;\n            if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }\n            while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }\n            pcVar33 = *(code **)(puVar35 + -0x14c);\n            pbVar29 = (byte *)0x0;\n            pbVar28 = (byte *)0x0;\n            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;\nLAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);\nLAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }\n          }" ({ "{") (expression_statement "param_1 = param_1 + 1;" (assignment_expression "param_1 = param_1 + 1" (identifier "param_1") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar5 == 0) {\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }\n            else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\nLAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);\n              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;\n              pbVar43 = *(byte **)(puVar35 + -0x134);\n              pbVar24 = unaff_s5;\n              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar39 = puVar37;\n              if (iVar11 != 0) goto LAB_0002e6d0;\n            }" ({ "{") (labeled_statement "LAB_0002e898:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);" (statement_identifier "LAB_0002e898") (: ":") (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" (identifier "unaff_s5") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xc0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xc0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")"))))) (; ";"))) (labeled_statement "LAB_0002e89c:\n              iVar9 = *(int *)(puVar35 + -0xc4);" (statement_identifier "LAB_0002e89c") (: ":") (expression_statement "iVar9 = *(int *)(puVar35 + -0xc4);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0xc4)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar35 + -0xc4)" (* "*") (cast_expression "(int *)(puVar35 + -0xc4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xc4)" (( "(") (binary_expression "puVar35 + -0xc4" (identifier "puVar35") (+ "+") (number_literal "-0xc4")) () ")"))))) (; ";"))) (if_statement "if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;" (if "if") (parenthesized_expression "(unaff_s5 != *(byte **)(puVar35 + -0x130))" (( "(") (binary_expression "unaff_s5 != *(byte **)(puVar35 + -0x130)" (identifier "unaff_s5") (!= "!=") (pointer_expression "*(byte **)(puVar35 + -0x130)" (* "*") (cast_expression "(byte **)(puVar35 + -0x130)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x130)" (( "(") (binary_expression "puVar35 + -0x130" (identifier "puVar35") (+ "+") (number_literal "-0x130")) () ")"))))) () ")")) (goto_statement "goto LAB_0002e6d0;" (goto "goto") (statement_identifier "LAB_0002e6d0") (; ";"))) (expression_statement "pbVar43 = *(byte **)(puVar35 + -0x134);" (assignment_expression "pbVar43 = *(byte **)(puVar35 + -0x134)" (identifier "pbVar43") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x134)" (* "*") (cast_expression "(byte **)(puVar35 + -0x134)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x134)" (( "(") (binary_expression "puVar35 + -0x134" (identifier "puVar35") (+ "+") (number_literal "-0x134")) () ")"))))) (; ";")) (expression_statement "pbVar24 = unaff_s5;" (assignment_expression "pbVar24 = unaff_s5" (identifier "pbVar24") (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9)" (identifier "iVar11") (= "=") (call_expression "(**(code **)(iVar15 + -0x79c0))(iVar9)" (parenthesized_expression "(**(code **)(iVar15 + -0x79c0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x79c0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x79c0)" (* "*") (cast_expression "(code **)(iVar15 + -0x79c0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79c0)" (( "(") (binary_expression "iVar15 + -0x79c0" (identifier "iVar15") (+ "+") (number_literal "-0x79c0")) () ")"))))) () ")")) (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (iVar11 != 0) goto LAB_0002e6d0;" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002e6d0;" (goto "goto") (statement_identifier "LAB_0002e6d0") (; ";"))) (} "}")) (else_clause "else {\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" (else "else") (compound_statement "{\nLAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);\n              if (puVar35[-300] == '\0') goto LAB_0002e89c;\n              puVar39 = puVar37;\n              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;\n            }" ({ "{") (labeled_statement "LAB_0002e448:\n              unaff_s5 = *(byte **)(puVar35 + -0xc0);" (statement_identifier "LAB_0002e448") (: ":") (expression_statement "unaff_s5 = *(byte **)(puVar35 + -0xc0);" (assignment_expression "unaff_s5 = *(byte **)(puVar35 + -0xc0)" (identifier "unaff_s5") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xc0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xc0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xc0)" (( "(") (binary_expression "puVar35 + -0xc0" (identifier "puVar35") (+ "+") (number_literal "-0xc0")) () ")"))))) (; ";"))) (if_statement "if (puVar35[-300] == '\0') goto LAB_0002e89c;" (if "if") (parenthesized_expression "(puVar35[-300] == '\0')" (( "(") (binary_expression "puVar35[-300] == '\0'" (subscript_expression "puVar35[-300]" (identifier "puVar35") ([ "[") (number_literal "-300") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002e89c;" (goto "goto") (statement_identifier "LAB_0002e89c") (; ";"))) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;" (if "if") (parenthesized_expression "(*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128))" (( "(") (binary_expression "*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)" (pointer_expression "*(int *)(puVar35 + -0xb8)" (* "*") (cast_expression "(int *)(puVar35 + -0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xb8)" (( "(") (binary_expression "puVar35 + -0xb8" (identifier "puVar35") (+ "+") (number_literal "-0xb8")) () ")")))) (!= "!=") (pointer_expression "*(int *)(puVar35 + -0x128)" (* "*") (cast_expression "(int *)(puVar35 + -0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x128)" (( "(") (binary_expression "puVar35 + -0x128" (identifier "puVar35") (+ "+") (number_literal "-0x128")) () ")"))))) () ")")) (goto_statement "goto LAB_0002e6c8;" (goto "goto") (statement_identifier "LAB_0002e6c8") (; ";"))) (} "}")))) (expression_statement "puVar8 = (undefined4 *)(puVar35 + -0xd4);" (assignment_expression "puVar8 = (undefined4 *)(puVar35 + -0xd4)" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)(puVar35 + -0xd4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xd4)" (( "(") (binary_expression "puVar35 + -0xd4" (identifier "puVar35") (+ "+") (number_literal "-0xd4")) () ")")))) (; ";")) (expression_statement "puVar3 = (undefined4 *)(puVar35 + -0x9c);" (assignment_expression "puVar3 = (undefined4 *)(puVar35 + -0x9c)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)(puVar35 + -0x9c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x9c)" (( "(") (binary_expression "puVar35 + -0x9c" (identifier "puVar35") (+ "+") (number_literal "-0x9c")) () ")")))) (; ";")) (do_statement "do {\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            } while (puVar12 != puVar22);" (do "do") (compound_statement "{\n              puVar18 = puVar3;\n              puVar12 = puVar8 + 4;\n              uVar41 = puVar8[3];\n              uVar25 = puVar8[1];\n              uVar16 = puVar8[2];\n              *puVar18 = *puVar8;\n              puVar18[1] = uVar25;\n              puVar18[2] = uVar16;\n              puVar18[3] = uVar41;\n              puVar22 = *(undefined4 **)(puVar35 + -0x158);\n              puVar8 = puVar12;\n              puVar3 = puVar18 + 4;\n            }" ({ "{") (expression_statement "puVar18 = puVar3;" (assignment_expression "puVar18 = puVar3" (identifier "puVar18") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar12 = puVar8 + 4;" (assignment_expression "puVar12 = puVar8 + 4" (identifier "puVar12") (= "=") (binary_expression "puVar8 + 4" (identifier "puVar8") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar41 = puVar8[3];" (assignment_expression "uVar41 = puVar8[3]" (identifier "uVar41") (= "=") (subscript_expression "puVar8[3]" (identifier "puVar8") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar25 = puVar8[1];" (assignment_expression "uVar25 = puVar8[1]" (identifier "uVar25") (= "=") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar16 = puVar8[2];" (assignment_expression "uVar16 = puVar8[2]" (identifier "uVar16") (= "=") (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*puVar18 = *puVar8;" (assignment_expression "*puVar18 = *puVar8" (pointer_expression "*puVar18" (* "*") (identifier "puVar18")) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "puVar18[1] = uVar25;" (assignment_expression "puVar18[1] = uVar25" (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar25")) (; ";")) (expression_statement "puVar18[2] = uVar16;" (assignment_expression "puVar18[2] = uVar16" (subscript_expression "puVar18[2]" (identifier "puVar18") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar18[3] = uVar41;" (assignment_expression "puVar18[3] = uVar41" (subscript_expression "puVar18[3]" (identifier "puVar18") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar22 = *(undefined4 **)(puVar35 + -0x158);" (assignment_expression "puVar22 = *(undefined4 **)(puVar35 + -0x158)" (identifier "puVar22") (= "=") (pointer_expression "*(undefined4 **)(puVar35 + -0x158)" (* "*") (cast_expression "(undefined4 **)(puVar35 + -0x158)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x158)" (( "(") (binary_expression "puVar35 + -0x158" (identifier "puVar35") (+ "+") (number_literal "-0x158")) () ")"))))) (; ";")) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" (identifier "puVar8") (= "=") (identifier "puVar12")) (; ";")) (expression_statement "puVar3 = puVar18 + 4;" (assignment_expression "puVar3 = puVar18 + 4" (identifier "puVar3") (= "=") (binary_expression "puVar18 + 4" (identifier "puVar18") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar12 != puVar22)" (( "(") (binary_expression "puVar12 != puVar22" (identifier "puVar12") (!= "!=") (identifier "puVar22")) () ")")) (; ";")) (expression_statement "bVar20 = *pbVar6;" (assignment_expression "bVar20 = *pbVar6" (identifier "bVar20") (= "=") (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6"))) (; ";")) (expression_statement "pbVar29 = (byte *)(int)(char)bVar20;" (assignment_expression "pbVar29 = (byte *)(int)(char)bVar20" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(int)(char)bVar20" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)bVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar20" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar20"))))) (; ";")) (expression_statement "*(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;" (assignment_expression "*(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60" (pointer_expression "*(undefined1 **)(puVar35 + -0x164)" (* "*") (cast_expression "(undefined1 **)(puVar35 + -0x164)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")")))) (= "=") (binary_expression "puVar35 + -0x60" (identifier "puVar35") (+ "+") (number_literal "-0x60"))) (; ";")) (expression_statement "pbVar24 = (byte *)*puVar22;" (assignment_expression "pbVar24 = (byte *)*puVar22" (identifier "pbVar24") (= "=") (cast_expression "(byte *)*puVar22" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar22" (* "*") (identifier "puVar22")))) (; ";")) (expression_statement "puVar18[5] = puVar22[1];" (assignment_expression "puVar18[5] = puVar22[1]" (subscript_expression "puVar18[5]" (identifier "puVar18") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar18[4] = pbVar24;" (assignment_expression "puVar18[4] = pbVar24" (subscript_expression "puVar18[4]" (identifier "puVar18") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "pbVar24")) (; ";")) (expression_statement "puVar35[-0x90] = 0;" (assignment_expression "puVar35[-0x90] = 0" (subscript_expression "puVar35[-0x90]" (identifier "puVar35") ([ "[") (number_literal "-0x90") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x54) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x54) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x54)" (* "*") (cast_expression "(byte **)(puVar35 + -0x54)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" (identifier "puVar35") ([ "[") (number_literal "-100") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (+ "+") (binary_expression "(uint)(bVar20 >> 5) * 4" (call_expression "(uint)(bVar20 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar20 >> 5)" (( "(") (binary_expression "bVar20 >> 5" (identifier "bVar20") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x60) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x60) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x60)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x60)" (( "(") (binary_expression "puVar35 + -0x60" (identifier "puVar35") (+ "+") (number_literal "-0x60")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);" (assignment_expression "*(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" (* "*") (cast_expression "(int *)(puVar35 + -0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")")))) (= "=") (binary_expression "*(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88)" (pointer_expression "*(int *)(puVar35 + -0x8c)" (* "*") (cast_expression "(int *)(puVar35 + -0x8c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x8c)" (( "(") (binary_expression "puVar35 + -0x8c" (identifier "puVar35") (+ "+") (number_literal "-0x8c")) () ")")))) (+ "+") (pointer_expression "*(int *)(puVar35 + -0x88)" (* "*") (cast_expression "(int *)(puVar35 + -0x88)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x88)" (( "(") (binary_expression "puVar35 + -0x88" (identifier "puVar35") (+ "+") (number_literal "-0x88")) () ")")))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x5c) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x5c) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x5c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x5c)" (( "(") (binary_expression "puVar35 + -0x5c" (identifier "puVar35") (+ "+") (number_literal "-0x5c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-0x58] = 0;" (assignment_expression "puVar35[-0x58] = 0" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" (identifier "puVar37") (= "=") (identifier "puVar39")) (; ";")) (if_statement "if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }\n            else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" (if "if") (parenthesized_expression "((uVar5 >> (bVar20 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(uVar5 >> (bVar20 & 0x1f) & 1) == 0" (parenthesized_expression "(uVar5 >> (bVar20 & 0x1f) & 1)" (( "(") (binary_expression "uVar5 >> (bVar20 & 0x1f) & 1" (binary_expression "uVar5 >> (bVar20 & 0x1f)" (identifier "uVar5") (>> ">>") (parenthesized_expression "(bVar20 & 0x1f)" (( "(") (binary_expression "bVar20 & 0x1f" (identifier "bVar20") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              pbVar29 = *(byte **)(puVar35 + -0x164);\n              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              puVar38 = puVar39;\n              if (iVar9 == 0) break;\n              pcVar33 = *(code **)(iVar15 + -0x7a18);\n              puVar35[-100] = 1;\n              uVar41 = (*pcVar33)();\n              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x50) = iVar9;\n              if (iVar9 == -1) goto LAB_0002ed18;\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }\n              if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              unaff_s6 = (byte *)0x1;\n              puVar35[-0x4c] = 1;\n              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));\n              iVar15 = *(int *)(puVar35 + -0x170);\n              if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }\n              puVar35[-0x58] = 1;\n            }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x164);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x164)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x164)" (* "*") (cast_expression "(byte **)(puVar35 + -0x164)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")"))))) (; ";")) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(pbVar29)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(pbVar29)" (( "(") (identifier "pbVar29") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "puVar38 = puVar39;" (assignment_expression "puVar38 = puVar39" (identifier "puVar38") (= "=") (identifier "puVar39")) (; ";")) (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7a18);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7a18)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) (; ";")) (expression_statement "puVar35[-100] = 1;" (assignment_expression "puVar35[-100] = 1" (subscript_expression "puVar35[-100]" (identifier "puVar35") ([ "[") (number_literal "-100") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar41 = (*pcVar33)();" (assignment_expression "uVar41 = (*pcVar33)()" (identifier "uVar41") (= "=") (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar6,uVar41)" (identifier "strnlen1") (argument_list "(pbVar6,uVar41)" (( "(") (identifier "pbVar6") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" (identifier "rpl_mbrtowc") (argument_list "(puVar35 + -0x48,pbVar6,pbVar24,pbVar29)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) (, ",") (identifier "pbVar6") (, ",") (identifier "pbVar24") (, ",") (identifier "pbVar29") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0x50) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x50) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x50)" (* "*") (cast_expression "(int *)(puVar35 + -0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) goto LAB_0002ed18;" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (goto_statement "goto LAB_0002ed18;" (goto "goto") (statement_identifier "LAB_0002ed18") (; ";"))) (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar35 + -0x54)" (* "*") (cast_expression "(char **)(puVar35 + -0x54)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -2) {\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }" (if "if") (parenthesized_expression "(iVar9 == -2)" (( "(") (binary_expression "iVar9 == -2" (identifier "iVar9") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                *(undefined4 *)(puVar35 + -0x50) = uVar41;\n                puVar35[-0x4c] = 0;\n                goto LAB_0002e51c;\n              }" ({ "{") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(pcVar30)" (( "(") (identifier "pcVar30") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar35[-0x4c] = 0;" (assignment_expression "puVar35[-0x4c] = 0" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0002e51c;" (goto "goto") (statement_identifier "LAB_0002e51c") (; ";")) (} "}"))) (if_statement "if (iVar9 == 0) {\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }\n              else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                *(undefined4 *)(puVar35 + -0x50) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n                if (*pcVar30 != '\0') goto LAB_0002ef60;\n                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n              }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x48)" (* "*") (cast_expression "(byte **)(puVar35 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x48)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (if_statement "if (*pcVar30 != '\0') goto LAB_0002ef60;" (if "if") (parenthesized_expression "(*pcVar30 != '\0')" (( "(") (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" (* "*") (identifier "pcVar30")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ef60;" (goto "goto") (statement_identifier "LAB_0002ef60") (; ";"))) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ed10;" (goto "goto") (statement_identifier "LAB_0002ed10") (; ";"))) (} "}")) (else_clause "else {\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" (else "else") (compound_statement "{\n                pbVar29 = *(byte **)(puVar35 + -0x48);\n              }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x48);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x48)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x48)" (* "*") (cast_expression "(byte **)(puVar35 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x48)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "unaff_s6 = (byte *)0x1;" (assignment_expression "unaff_s6 = (byte *)0x1" (identifier "unaff_s6") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));" (assignment_expression "iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(*(undefined4 *)(puVar35 + -0x164))" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x164))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x164)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x164)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x164)" (( "(") (binary_expression "puVar35 + -0x164" (identifier "puVar35") (+ "+") (number_literal "-0x164")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n                puVar35[-100] = 0;\n              }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                puVar35[-100] = 0;\n              }" ({ "{") (expression_statement "puVar35[-100] = 0;" (assignment_expression "puVar35[-100] = 0" (subscript_expression "puVar35[-100]" (identifier "puVar35") ([ "[") (number_literal "-100") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" (else "else") (compound_statement "{\n              *(byte **)(puVar35 + -0x48) = pbVar29;\n              *(undefined4 *)(puVar35 + -0x50) = 1;\n              puVar35[-0x4c] = 1;\n              puVar35[-0x58] = 1;\n            }" ({ "{") (expression_statement "*(byte **)(puVar35 + -0x48) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x48) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x48)" (* "*") (cast_expression "(byte **)(puVar35 + -0x48)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x48)" (( "(") (binary_expression "puVar35 + -0x48" (identifier "puVar35") (+ "+") (number_literal "-0x48")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x50) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x50) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x50)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x50)" (( "(") (binary_expression "puVar35 + -0x50" (identifier "puVar35") (+ "+") (number_literal "-0x50")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x4c] = 1;" (assignment_expression "puVar35[-0x4c] = 1" (subscript_expression "puVar35[-0x4c]" (identifier "puVar35") ([ "[") (number_literal "-0x4c") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x58] = 1;" (assignment_expression "puVar35[-0x58] = 1" (subscript_expression "puVar35[-0x58]" (identifier "puVar35") ([ "[") (number_literal "-0x58") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if (pbVar29 != (byte *)0x0) {\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0x54);\n              goto LAB_0002e51c;\n            }" ({ "{") (expression_statement "pcVar30 = *(char **)(puVar35 + -0x54);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0x54)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar35 + -0x54)" (* "*") (cast_expression "(char **)(puVar35 + -0x54)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x54)" (( "(") (binary_expression "puVar35 + -0x54" (identifier "puVar35") (+ "+") (number_literal "-0x54")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002e51c;" (goto "goto") (statement_identifier "LAB_0002e51c") (; ";")) (} "}"))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7b80);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7b80)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x7b80)" (* "*") (cast_expression "(code **)(iVar15 + -0x7b80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7b80)" (( "(") (binary_expression "iVar15 + -0x7b80" (identifier "iVar15") (+ "+") (number_literal "-0x7b80")) () ")"))))) (; ";")) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" (identifier "pbVar29") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0002eb80:\n            iVar9 = (*pcVar33)(unaff_s4);" (statement_identifier "LAB_0002eb80") (: ":") (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";"))) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "puVar38 = puVar39;" (assignment_expression "puVar38 = puVar39" (identifier "puVar38") (= "=") (identifier "puVar39")) (; ";")) (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar35[-0x10c] = 1;" (assignment_expression "puVar35[-0x10c] = 1" (subscript_expression "puVar35[-0x10c]" (identifier "puVar35") ([ "[") (number_literal "-0x10c") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar37 = puVar39;" (assignment_expression "puVar37 = puVar39" (identifier "puVar37") (= "=") (identifier "puVar39")) (; ";")) (labeled_statement "LAB_0002eb98:\n            pbVar43 = pbVar29;" (statement_identifier "LAB_0002eb98") (: ":") (expression_statement "pbVar43 = pbVar29;" (assignment_expression "pbVar43 = pbVar29" (identifier "pbVar43") (= "=") (identifier "pbVar29")) (; ";"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar43,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar43,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar43,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar43,uVar41)" (identifier "strnlen1") (argument_list "(pbVar43,uVar41)" (( "(") (identifier "pbVar43") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" (identifier "rpl_mbrtowc") (argument_list "(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) (, ",") (identifier "pbVar43") (, ",") (identifier "pbVar24") (, ",") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0xf8) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xf8) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xf8)" (* "*") (cast_expression "(int *)(puVar35 + -0xf8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }\n            else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n            }" ({ "{") (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar35 + -0xfc)" (* "*") (cast_expression "(char **)(puVar35 + -0xfc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";")) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" (else "else") (compound_statement "{\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n              if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }\n              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n              puVar35[-0xf4] = 0;\n            }" ({ "{") (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar35 + -0xfc)" (* "*") (cast_expression "(char **)(puVar35 + -0xfc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";")) (if_statement "if (iVar9 != -2) {\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }" (if "if") (parenthesized_expression "(iVar9 != -2)" (( "(") (binary_expression "iVar9 != -2" (identifier "iVar9") (!= "!=") (number_literal "-2")) () ")")) (compound_statement "{\n                if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }\n                pcVar33 = *(code **)(iVar15 + -0x799c);\n                unaff_s6 = (byte *)0x1;\n                puVar35[-0xf4] = 1;\n                iVar9 = (*pcVar33)(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }\n                puVar35[-0x100] = 1;\n                goto LAB_0002ea50;\n              }" ({ "{") (if_statement "if (iVar9 == 0) {\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }\n                else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  *(undefined4 *)(puVar35 + -0xf8) = 1;\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                  puVar39 = puVar37;\n                  if (*pcVar30 != '\0') goto LAB_0002ef60;\n                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n                }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (*pcVar30 != '\0') goto LAB_0002ef60;" (if "if") (parenthesized_expression "(*pcVar30 != '\0')" (( "(") (binary_expression "*pcVar30 != '\0'" (pointer_expression "*pcVar30" (* "*") (identifier "pcVar30")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ef60;" (goto "goto") (statement_identifier "LAB_0002ef60") (; ";"))) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ed10;" (goto "goto") (statement_identifier "LAB_0002ed10") (; ";"))) (} "}")) (else_clause "else {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" (else "else") (compound_statement "{\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\n                }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "unaff_s6 = (byte *)0x1;" (assignment_expression "unaff_s6 = (byte *)0x1" (identifier "unaff_s6") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n                  puVar35[-0x10c] = 0;\n                }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  puVar35[-0x10c] = 0;\n                }" ({ "{") (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" (identifier "puVar35") ([ "[") (number_literal "-0x10c") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002ea50;" (goto "goto") (statement_identifier "LAB_0002ea50") (; ";")) (} "}"))) (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30)" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(pcVar30)" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(pcVar30)" (( "(") (identifier "pcVar30") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (while_statement "while( true ) {\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              unaff_s5 = unaff_s5 + -1;\n              puVar35[-0x100] = 0;\n              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));\n              *(byte **)(puVar35 + -0xfc) = pbVar29;\n              unaff_s6 = pbVar29;\n              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;\nLAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;\n              pcVar33 = *(code **)(iVar15 + -0x799c);\n              puVar39 = puVar37;\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*pbVar29;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;\nLAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);\n            }" ({ "{") (expression_statement "unaff_s5 = unaff_s5 + -1;" (assignment_expression "unaff_s5 = unaff_s5 + -1" (identifier "unaff_s5") (= "=") (binary_expression "unaff_s5 + -1" (identifier "unaff_s5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar35[-0x100] = 0;" (assignment_expression "puVar35[-0x100] = 0" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));" (assignment_expression "pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8))" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(pcVar30 + *(int *)(puVar35 + -0xf8))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar30 + *(int *)(puVar35 + -0xf8))" (( "(") (binary_expression "pcVar30 + *(int *)(puVar35 + -0xf8)" (identifier "pcVar30") (+ "+") (pointer_expression "*(int *)(puVar35 + -0xf8)" (* "*") (cast_expression "(int *)(puVar35 + -0xf8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")"))))) () ")")))) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xfc) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xfc) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xfc)" (* "*") (cast_expression "(byte **)(puVar35 + -0xfc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (expression_statement "unaff_s6 = pbVar29;" (assignment_expression "unaff_s6 = pbVar29" (identifier "unaff_s6") (= "=") (identifier "pbVar29")) (; ";")) (if_statement "if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;" (if "if") (parenthesized_expression "(unaff_s5 == (byte *)0x0)" (( "(") (binary_expression "unaff_s5 == (byte *)0x0" (identifier "unaff_s5") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ed30;" (goto "goto") (statement_identifier "LAB_0002ed30") (; ";"))) (labeled_statement "LAB_0002ea08:\n              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;" (statement_identifier "LAB_0002ea08") (: ":") (if_statement "if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;" (if "if") (parenthesized_expression "(puVar35[-0x10c] != '\0')" (( "(") (binary_expression "puVar35[-0x10c] != '\0'" (subscript_expression "puVar35[-0x10c]" (identifier "puVar35") ([ "[") (number_literal "-0x10c") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002eb98;" (goto "goto") (statement_identifier "LAB_0002eb98") (; ";")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>\n                   (*pbVar29 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (+ "+") (binary_expression "(uint)(*pbVar29 >> 5) * 4" (call_expression "(uint)(*pbVar29 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*pbVar29 >> 5)" (( "(") (binary_expression "*pbVar29 >> 5" (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*pbVar29 & 0x1f)" (( "(") (binary_expression "*pbVar29 & 0x1f" (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002eb80;" (goto "goto") (statement_identifier "LAB_0002eb80") (; ";"))) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = (byte *)(int)(char)*pbVar29;" (assignment_expression "pbVar29 = (byte *)(int)(char)*pbVar29" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(int)(char)*pbVar29" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar29" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar29" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar29" (* "*") (identifier "pbVar29")))))) (; ";")) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xf0) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xf0) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (labeled_statement "LAB_0002ea50:\n              if (pbVar29 == (byte *)0x0) break;" (statement_identifier "LAB_0002ea50") (: ":") (if_statement "if (pbVar29 == (byte *)0x0) break;" (if "if") (parenthesized_expression "(pbVar29 == (byte *)0x0)" (( "(") (binary_expression "pbVar29 == (byte *)0x0" (identifier "pbVar29") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";")))) (labeled_statement "LAB_0002e9e8:\n              pcVar30 = *(char **)(puVar35 + -0xfc);" (statement_identifier "LAB_0002e9e8") (: ":") (expression_statement "pcVar30 = *(char **)(puVar35 + -0xfc);" (assignment_expression "pcVar30 = *(char **)(puVar35 + -0xfc)" (identifier "pcVar30") (= "=") (pointer_expression "*(char **)(puVar35 + -0xfc)" (* "*") (cast_expression "(char **)(puVar35 + -0xfc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";"))) (} "}"))) (expression_statement "pcVar33 = *(code **)(puVar35 + -0x14c);" (assignment_expression "pcVar33 = *(code **)(puVar35 + -0x14c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(puVar35 + -0x14c)" (* "*") (cast_expression "(code **)(puVar35 + -0x14c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x14c)" (( "(") (binary_expression "puVar35 + -0x14c" (identifier "puVar35") (+ "+") (number_literal "-0x14c")) () ")"))))) (; ";")) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" (identifier "pbVar29") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pbVar28 = (byte *)0x0;" (assignment_expression "pbVar28 = (byte *)0x0" (identifier "pbVar28") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (puVar35[-0x100] != '\0') goto LAB_0002ea60;" (if "if") (parenthesized_expression "(puVar35[-0x100] != '\0')" (( "(") (binary_expression "puVar35[-0x100] != '\0'" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ea60;" (goto "goto") (statement_identifier "LAB_0002ea60") (; ";"))) (labeled_statement "LAB_0002ed2c:\n            unaff_s6 = *(byte **)(puVar35 + -0xfc);" (statement_identifier "LAB_0002ed2c") (: ":") (expression_statement "unaff_s6 = *(byte **)(puVar35 + -0xfc);" (assignment_expression "unaff_s6 = *(byte **)(puVar35 + -0xfc)" (identifier "unaff_s6") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xfc)" (* "*") (cast_expression "(byte **)(puVar35 + -0xfc)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")"))))) (; ";"))) (labeled_statement "LAB_0002ed30:\n            if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" (statement_identifier "LAB_0002ed30") (: ":") (if_statement "if (puVar35[-0x10c] == '\0') {\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }\n            else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" (if "if") (parenthesized_expression "(puVar35[-0x10c] == '\0')" (( "(") (binary_expression "puVar35[-0x10c] == '\0'" (subscript_expression "puVar35[-0x10c]" (identifier "puVar35") ([ "[") (number_literal "-0x10c") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              pbVar29 = (byte *)(int)(char)*unaff_s6;\n              puVar35[-0xf4] = 1;\n              puVar35[-0x100] = 1;\n              *(byte **)(puVar35 + -0xf0) = pbVar29;\nLAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);\n              pbVar28 = pbVar29;\n              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;\nLAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;\n              pbVar43 = pbVar6;\n              iVar9 = (*pcVar33)(pbVar10);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0x15c) = iVar9;\n              pbVar29 = pbVar28;\n              if (iVar9 != 0) goto LAB_0002ef34;\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n            }" ({ "{") (if_statement "if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0) {\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }" (if "if") (parenthesized_expression "((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f) & 1" (binary_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>\n                   (*unaff_s6 & 0x1f)" (pointer_expression "*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4)" (( "(") (binary_expression "*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4" (pointer_expression "*(int *)(puVar35 + -0x168)" (* "*") (cast_expression "(int *)(puVar35 + -0x168)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x168)" (( "(") (binary_expression "puVar35 + -0x168" (identifier "puVar35") (+ "+") (number_literal "-0x168")) () ")")))) (+ "+") (binary_expression "(uint)(*unaff_s6 >> 5) * 4" (call_expression "(uint)(*unaff_s6 >> 5)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*unaff_s6 >> 5)" (( "(") (binary_expression "*unaff_s6 >> 5" (pointer_expression "*unaff_s6" (* "*") (identifier "unaff_s6")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*unaff_s6 & 0x1f)" (( "(") (binary_expression "*unaff_s6 & 0x1f" (pointer_expression "*unaff_s6" (* "*") (identifier "unaff_s6")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);\n                iVar15 = *(int *)(puVar35 + -0x170);\n                puVar38 = puVar37;\n                if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }\n                break;\n              }" ({ "{") (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(unaff_s4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "puVar38 = puVar37;" (assignment_expression "puVar38 = puVar37" (identifier "puVar38") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (iVar9 != 0) {\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  puVar35[-0x10c] = 1;\n                  goto LAB_0002ee14;\n                }" ({ "{") (expression_statement "puVar35[-0x10c] = 1;" (assignment_expression "puVar35[-0x10c] = 1" (subscript_expression "puVar35[-0x10c]" (identifier "puVar35") ([ "[") (number_literal "-0x10c") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002ee14;" (goto "goto") (statement_identifier "LAB_0002ee14") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = (byte *)(int)(char)*unaff_s6;" (assignment_expression "pbVar29 = (byte *)(int)(char)*unaff_s6" (identifier "pbVar29") (= "=") (cast_expression "(byte *)(int)(char)*unaff_s6" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*unaff_s6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*unaff_s6" (* "*") (identifier "unaff_s6")))))) (; ";")) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0xf0) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0xf0) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (labeled_statement "LAB_0002ed78:\n              pcVar33 = *(code **)(puVar35 + -0x14c);" (statement_identifier "LAB_0002ed78") (: ":") (expression_statement "pcVar33 = *(code **)(puVar35 + -0x14c);" (assignment_expression "pcVar33 = *(code **)(puVar35 + -0x14c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(puVar35 + -0x14c)" (* "*") (cast_expression "(code **)(puVar35 + -0x14c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x14c)" (( "(") (binary_expression "puVar35 + -0x14c" (identifier "puVar35") (+ "+") (number_literal "-0x14c")) () ")"))))) (; ";"))) (expression_statement "pbVar28 = pbVar29;" (assignment_expression "pbVar28 = pbVar29" (identifier "pbVar28") (= "=") (identifier "pbVar29")) (; ";")) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ed84;" (goto "goto") (statement_identifier "LAB_0002ed84") (; ";"))) (labeled_statement "LAB_0002ea60:\n              pbVar24 = puVar35 + -0x148;" (statement_identifier "LAB_0002ea60") (: ":") (expression_statement "pbVar24 = puVar35 + -0x148;" (assignment_expression "pbVar24 = puVar35 + -0x148" (identifier "pbVar24") (= "=") (binary_expression "puVar35 + -0x148" (identifier "puVar35") (+ "+") (number_literal "-0x148"))) (; ";"))) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" (identifier "pbVar43") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(pbVar10);" (assignment_expression "iVar9 = (*pcVar33)(pbVar10)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(pbVar10)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(pbVar10)" (( "(") (identifier "pbVar10") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0x15c) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x15c) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x15c)" (* "*") (cast_expression "(int *)(puVar35 + -0x15c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x15c)" (( "(") (binary_expression "puVar35 + -0x15c" (identifier "puVar35") (+ "+") (number_literal "-0x15c")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" (identifier "pbVar29") (= "=") (identifier "pbVar28")) (; ";")) (if_statement "if (iVar9 != 0) goto LAB_0002ef34;" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002ef34;" (goto "goto") (statement_identifier "LAB_0002ef34") (; ";"))) (expression_statement "uVar5 = (uint)(byte)puVar35[-0xbc];" (assignment_expression "uVar5 = (uint)(byte)puVar35[-0xbc]" (identifier "uVar5") (= "=") (cast_expression "(uint)(byte)puVar35[-0xbc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar35[-0xbc]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar35[-0xbc]" (identifier "puVar35") ([ "[") (number_literal "-0xbc") (] "]"))))) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x150) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x150) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x150)" (* "*") (cast_expression "(byte **)(puVar35 + -0x150)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x150)" (( "(") (binary_expression "puVar35 + -0x150" (identifier "puVar35") (+ "+") (number_literal "-0x150")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (} "}")) (else_clause "else {\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" (else "else") (compound_statement "{\nLAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();\n              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);\n              pbVar43 = unaff_s6;\n              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);\n              iVar15 = *(int *)(puVar35 + -0x170);\n              *(int *)(puVar35 + -0xf8) = iVar9;\n              if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }\n              puVar35[-0xf4] = 0;\n              *(undefined4 *)(puVar35 + -0xf8) = 1;\n              puVar35[-0x100] = 1;\nLAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];\n              *(byte **)(puVar35 + -0x150) = param_1;\n              *(undefined4 *)(puVar35 + -0x15c) = 1;\n            }" ({ "{") (labeled_statement "LAB_0002ee14:\n              uVar41 = (**(code **)(iVar15 + -0x7a18))();" (statement_identifier "LAB_0002ee14") (: ":") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a18))();" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a18))()" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a18))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7a18))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a18)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(unaff_s6,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(unaff_s6,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(unaff_s6,uVar41)" (identifier "strnlen1") (argument_list "(unaff_s6,uVar41)" (( "(") (identifier "unaff_s6") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "pbVar43 = unaff_s6;" (assignment_expression "pbVar43 = unaff_s6" (identifier "pbVar43") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" (identifier "rpl_mbrtowc") (argument_list "(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) (, ",") (identifier "unaff_s6") (, ",") (identifier "pbVar24") (, ",") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0xf8) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0xf8) = iVar9" (pointer_expression "*(int *)(puVar35 + -0xf8)" (* "*") (cast_expression "(int *)(puVar35 + -0xf8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 != -1) {\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }" (if "if") (parenthesized_expression "(iVar9 != -1)" (( "(") (binary_expression "iVar9 != -1" (identifier "iVar9") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n                if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }\n                if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }\n                *(undefined4 *)(puVar35 + -0xf8) = 1;\n                pbVar29 = *(byte **)(puVar35 + -0xf0);\n                puVar39 = puVar37;\n                if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }\n                goto LAB_0002ef60;\n              }" ({ "{") (if_statement "if (iVar9 == -2) {\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }" (if "if") (parenthesized_expression "(iVar9 == -2)" (( "(") (binary_expression "iVar9 == -2" (identifier "iVar9") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;\n                  puVar35[-0xf4] = 0;\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed84;\n                }" ({ "{") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc))" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0xfc))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0xfc)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xfc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002ed84;" (goto "goto") (statement_identifier "LAB_0002ed84") (; ";")) (} "}"))) (if_statement "if (iVar9 != 0) {\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  pbVar29 = *(byte **)(puVar35 + -0xf0);\nLAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);\n                  unaff_s5 = (byte *)0x1;\n                  puVar35[-0xf4] = 1;\n                  iVar9 = (*pcVar33)(unaff_s4);\n                  iVar15 = *(int *)(puVar35 + -0x170);\n                  if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }\n                  puVar35[-0x100] = 1;\n                  goto LAB_0002ed78;\n                }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (labeled_statement "LAB_0002ee78:\n                  pcVar33 = *(code **)(iVar15 + -0x799c);" (statement_identifier "LAB_0002ee78") (: ":") (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";"))) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" (identifier "unaff_s5") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar35[-0xf4] = 1;" (assignment_expression "puVar35[-0xf4] = 1" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(unaff_s4);" (assignment_expression "iVar9 = (*pcVar33)(unaff_s4)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(unaff_s4)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(unaff_s4)" (( "(") (identifier "unaff_s4") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n                    puVar35[-0x10c] = 0;\n                  }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    puVar35[-0x10c] = 0;\n                  }" ({ "{") (expression_statement "puVar35[-0x10c] = 0;" (assignment_expression "puVar35[-0x10c] = 0" (subscript_expression "puVar35[-0x10c]" (identifier "puVar35") ([ "[") (number_literal "-0x10c") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002ed78;" (goto "goto") (statement_identifier "LAB_0002ed78") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0xf0);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0xf0)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0xf0)" (* "*") (cast_expression "(byte **)(puVar35 + -0xf0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xf0)" (( "(") (binary_expression "puVar35 + -0xf0" (identifier "puVar35") (+ "+") (number_literal "-0xf0")) () ")"))))) (; ";")) (expression_statement "puVar39 = puVar37;" (assignment_expression "puVar39 = puVar37" (identifier "puVar39") (= "=") (identifier "puVar37")) (; ";")) (if_statement "if (**(char **)(puVar35 + -0xfc) == '\0') {\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }" (if "if") (parenthesized_expression "(**(char **)(puVar35 + -0xfc) == '\0')" (( "(") (binary_expression "**(char **)(puVar35 + -0xfc) == '\0'" (pointer_expression "**(char **)(puVar35 + -0xfc)" (* "*") (pointer_expression "*(char **)(puVar35 + -0xfc)" (* "*") (cast_expression "(char **)(puVar35 + -0xfc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0xfc)" (( "(") (binary_expression "puVar35 + -0xfc" (identifier "puVar35") (+ "+") (number_literal "-0xfc")) () ")"))))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;\n                  goto LAB_0002ed10;\n                }" ({ "{") (if_statement "if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;" (if "if") (parenthesized_expression "(pbVar29 == (byte *)0x0)" (( "(") (binary_expression "pbVar29 == (byte *)0x0" (identifier "pbVar29") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ee78;" (goto "goto") (statement_identifier "LAB_0002ee78") (; ";"))) (goto_statement "goto LAB_0002ed10;" (goto "goto") (statement_identifier "LAB_0002ed10") (; ";")) (} "}"))) (goto_statement "goto LAB_0002ef60;" (goto "goto") (statement_identifier "LAB_0002ef60") (; ";")) (} "}"))) (expression_statement "puVar35[-0xf4] = 0;" (assignment_expression "puVar35[-0xf4] = 0" (subscript_expression "puVar35[-0xf4]" (identifier "puVar35") ([ "[") (number_literal "-0xf4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0xf8) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0xf8) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0xf8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0xf8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0xf8)" (( "(") (binary_expression "puVar35 + -0xf8" (identifier "puVar35") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x100] = 1;" (assignment_expression "puVar35[-0x100] = 1" (subscript_expression "puVar35[-0x100]" (identifier "puVar35") ([ "[") (number_literal "-0x100") (] "]")) (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_0002ed84:\n              uVar5 = (uint)(byte)puVar35[-0xbc];" (statement_identifier "LAB_0002ed84") (: ":") (expression_statement "uVar5 = (uint)(byte)puVar35[-0xbc];" (assignment_expression "uVar5 = (uint)(byte)puVar35[-0xbc]" (identifier "uVar5") (= "=") (cast_expression "(uint)(byte)puVar35[-0xbc]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)puVar35[-0xbc]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar35[-0xbc]" (identifier "puVar35") ([ "[") (number_literal "-0xbc") (] "]"))))) (; ";"))) (expression_statement "*(byte **)(puVar35 + -0x150) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x150) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x150)" (* "*") (cast_expression "(byte **)(puVar35 + -0x150)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x150)" (( "(") (binary_expression "puVar35 + -0x150" (identifier "puVar35") (+ "+") (number_literal "-0x150")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x15c) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x15c) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x15c)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x15c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x15c)" (( "(") (binary_expression "puVar35 + -0x15c" (identifier "puVar35") (+ "+") (number_literal "-0x15c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_0002ef3c;" (goto "goto") (statement_identifier "LAB_0002ef3c") (; ";")) (} "}")))) (expression_statement "pbVar29 = (byte *)0x0;" (assignment_expression "pbVar29 = (byte *)0x0" (identifier "pbVar29") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_0002e2ac;" (goto "goto") (statement_identifier "LAB_0002e2ac") (; ";")) (} "}"))) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(param_1)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(param_1)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "pbVar29 = pbVar28;" (assignment_expression "pbVar29 = pbVar28" (identifier "pbVar29") (= "=") (identifier "pbVar28")) (; ";")) (if_statement "if (iVar9 != 0) {\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar33 = *(code **)(iVar15 + -0x7a18);\n      puVar35[-0x144] = 1;\n      uVar41 = (*pcVar33)();\n      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);\n      pbVar43 = pbVar6;\n      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      *(int *)(puVar35 + -0x130) = iVar9;\n      if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }\n      if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }\n      unaff_s5 = (byte *)0x1;\n      puVar35[-300] = 1;\n      iVar9 = (*pcVar33)(param_1);\n      iVar15 = *(int *)(puVar35 + -0x170);\n      if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }\n      puVar35[-0x138] = 1;\n      goto LAB_0002e2a0;\n    }" ({ "{") (expression_statement "pcVar33 = *(code **)(iVar15 + -0x7a18);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x7a18)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x7a18)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a18)" (( "(") (binary_expression "iVar15 + -0x7a18" (identifier "iVar15") (+ "+") (number_literal "-0x7a18")) () ")"))))) (; ";")) (expression_statement "puVar35[-0x144] = 1;" (assignment_expression "puVar35[-0x144] = 1" (subscript_expression "puVar35[-0x144]" (identifier "puVar35") ([ "[") (number_literal "-0x144") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar41 = (*pcVar33)();" (assignment_expression "uVar41 = (*pcVar33)()" (identifier "uVar41") (= "=") (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar24 = (byte *)strnlen1(pbVar6,uVar41);" (assignment_expression "pbVar24 = (byte *)strnlen1(pbVar6,uVar41)" (identifier "pbVar24") (= "=") (cast_expression "(byte *)strnlen1(pbVar6,uVar41)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "strnlen1(pbVar6,uVar41)" (identifier "strnlen1") (argument_list "(pbVar6,uVar41)" (( "(") (identifier "pbVar6") (, ",") (identifier "uVar41") () ")"))))) (; ";")) (expression_statement "pbVar43 = pbVar6;" (assignment_expression "pbVar43 = pbVar6" (identifier "pbVar43") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1)" (identifier "rpl_mbrtowc") (argument_list "(puVar35 + -0x128,pbVar6,pbVar24,param_1)" (( "(") (binary_expression "puVar35 + -0x128" (identifier "puVar35") (+ "+") (number_literal "-0x128")) (, ",") (identifier "pbVar6") (, ",") (identifier "pbVar24") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar35 + -0x130) = iVar9;" (assignment_expression "*(int *)(puVar35 + -0x130) = iVar9" (pointer_expression "*(int *)(puVar35 + -0x130)" (* "*") (cast_expression "(int *)(puVar35 + -0x130)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x130)" (( "(") (binary_expression "puVar35 + -0x130" (identifier "puVar35") (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == -1) {\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        puVar35[-300] = 0;\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" ({ "{") (expression_statement "puVar35[-300] = 0;" (assignment_expression "puVar35[-300] = 0" (subscript_expression "puVar35[-300]" (identifier "puVar35") ([ "[") (number_literal "-300") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x130)" (( "(") (binary_expression "puVar35 + -0x130" (identifier "puVar35") (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" (identifier "puVar35") ([ "[") (number_literal "-0x138") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002e360;" (goto "goto") (statement_identifier "LAB_0002e360") (; ";")) (} "}"))) (if_statement "if (iVar9 == -2) {\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" (if "if") (parenthesized_expression "(iVar9 == -2)" (( "(") (binary_expression "iVar9 == -2" (identifier "iVar9") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));\n        iVar15 = *(int *)(puVar35 + -0x170);\n        *(undefined4 *)(puVar35 + -0x130) = uVar41;\n        puVar35[-300] = 0;\n        puVar35[-0x138] = 1;\n        goto LAB_0002e360;\n      }" ({ "{") (expression_statement "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));" (assignment_expression "uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134))" (identifier "uVar41") (= "=") (call_expression "(**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134))" (parenthesized_expression "(**(code **)(iVar15 + -0x7a8c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7a8c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7a8c)" (* "*") (cast_expression "(code **)(iVar15 + -0x7a8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7a8c)" (( "(") (binary_expression "iVar15 + -0x7a8c" (identifier "iVar15") (+ "+") (number_literal "-0x7a8c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x134))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x134)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x134)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x134)" (( "(") (binary_expression "puVar35 + -0x134" (identifier "puVar35") (+ "+") (number_literal "-0x134")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x130) = uVar41;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = uVar41" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x130)" (( "(") (binary_expression "puVar35 + -0x130" (identifier "puVar35") (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (identifier "uVar41")) (; ";")) (expression_statement "puVar35[-300] = 0;" (assignment_expression "puVar35[-300] = 0" (subscript_expression "puVar35[-300]" (identifier "puVar35") ([ "[") (number_literal "-300") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" (identifier "puVar35") ([ "[") (number_literal "-0x138") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002e360;" (goto "goto") (statement_identifier "LAB_0002e360") (; ";")) (} "}"))) (if_statement "if (iVar9 == 0) {\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }\n      else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined4 *)(puVar35 + -0x130) = 1;\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n        puVar39 = puVar34 + -0x128;\n        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;\n      }" ({ "{") (expression_statement "*(undefined4 *)(puVar35 + -0x130) = 1;" (assignment_expression "*(undefined4 *)(puVar35 + -0x130) = 1" (pointer_expression "*(undefined4 *)(puVar35 + -0x130)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x130)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x130)" (( "(") (binary_expression "puVar35 + -0x130" (identifier "puVar35") (+ "+") (number_literal "-0x130")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x128);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x128)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x128)" (* "*") (cast_expression "(byte **)(puVar35 + -0x128)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x128)" (( "(") (binary_expression "puVar35 + -0x128" (identifier "puVar35") (+ "+") (number_literal "-0x128")) () ")"))))) (; ";")) (if_statement "if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;" (if "if") (parenthesized_expression "(**(char **)(puVar35 + -0x134) != '\0')" (( "(") (binary_expression "**(char **)(puVar35 + -0x134) != '\0'" (pointer_expression "**(char **)(puVar35 + -0x134)" (* "*") (pointer_expression "*(char **)(puVar35 + -0x134)" (* "*") (cast_expression "(char **)(puVar35 + -0x134)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x134)" (( "(") (binary_expression "puVar35 + -0x134" (identifier "puVar35") (+ "+") (number_literal "-0x134")) () ")"))))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0002ef60;" (goto "goto") (statement_identifier "LAB_0002ef60") (; ";"))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (expression_statement "puVar39 = puVar34 + -0x128;" (assignment_expression "puVar39 = puVar34 + -0x128" (identifier "puVar39") (= "=") (binary_expression "puVar34 + -0x128" (identifier "puVar34") (+ "+") (number_literal "-0x128"))) (; ";")) (if_statement "if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;" (if "if") (parenthesized_expression "(pbVar29 != (byte *)0x0)" (( "(") (binary_expression "pbVar29 != (byte *)0x0" (identifier "pbVar29") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002ed10;" (goto "goto") (statement_identifier "LAB_0002ed10") (; ";"))) (} "}")) (else_clause "else {\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" (else "else") (compound_statement "{\n        pbVar29 = *(byte **)(puVar35 + -0x128);\n        pcVar33 = *(code **)(iVar15 + -0x799c);\n      }" ({ "{") (expression_statement "pbVar29 = *(byte **)(puVar35 + -0x128);" (assignment_expression "pbVar29 = *(byte **)(puVar35 + -0x128)" (identifier "pbVar29") (= "=") (pointer_expression "*(byte **)(puVar35 + -0x128)" (* "*") (cast_expression "(byte **)(puVar35 + -0x128)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x128)" (( "(") (binary_expression "puVar35 + -0x128" (identifier "puVar35") (+ "+") (number_literal "-0x128")) () ")"))))) (; ";")) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x799c);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x799c)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) (; ";")) (} "}")))) (expression_statement "unaff_s5 = (byte *)0x1;" (assignment_expression "unaff_s5 = (byte *)0x1" (identifier "unaff_s5") (= "=") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (expression_statement "puVar35[-300] = 1;" (assignment_expression "puVar35[-300] = 1" (subscript_expression "puVar35[-300]" (identifier "puVar35") ([ "[") (number_literal "-300") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar9 = (*pcVar33)(param_1);" (assignment_expression "iVar9 = (*pcVar33)(param_1)" (identifier "iVar9") (= "=") (call_expression "(*pcVar33)(param_1)" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x170);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x170)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x170)" (* "*") (cast_expression "(int *)(puVar35 + -0x170)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x170)" (( "(") (binary_expression "puVar35 + -0x170" (identifier "puVar35") (+ "+") (number_literal "-0x170")) () ")"))))) (; ";")) (if_statement "if (iVar9 != 0) {\n        puVar35[-0x144] = 0;\n      }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar35[-0x144] = 0;\n      }" ({ "{") (expression_statement "puVar35[-0x144] = 0;" (assignment_expression "puVar35[-0x144] = 0" (subscript_expression "puVar35[-0x144]" (identifier "puVar35") ([ "[") (number_literal "-0x144") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar35[-0x138] = 1;" (assignment_expression "puVar35[-0x138] = 1" (subscript_expression "puVar35[-0x138]" (identifier "puVar35") ([ "[") (number_literal "-0x138") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0002e2a0;" (goto "goto") (statement_identifier "LAB_0002e2a0") (; ";")) (} "}"))) (labeled_statement "LAB_0002ef3c:\n    (**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);" (statement_identifier "LAB_0002ef3c") (: ":") (expression_statement "(**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0);" (call_expression "(**(code **)(iVar15 + -0x7bb0))\n              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0)" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7bb0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7bb0)" (* "*") (cast_expression "(code **)(iVar15 + -0x7bb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7bb0)" (( "(") (binary_expression "iVar15 + -0x7bb0" (identifier "iVar15") (+ "+") (number_literal "-0x7bb0")) () ")"))))) () ")")) (argument_list "(*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,\n               *(int *)(iVar15 + -0x7fc8) + -0xd0)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x100" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x100")) (, ",") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x120")) (, ",") (number_literal "0x96") (, ",") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xd0" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0xd0")) () ")"))) (; ";"))) (expression_statement "puVar39 = puVar38;" (assignment_expression "puVar39 = puVar38" (identifier "puVar39") (= "=") (identifier "puVar38")) (; ";")) (labeled_statement "LAB_0002ef60:\n    pbVar24 = &DAT_000000b2;" (statement_identifier "LAB_0002ef60") (: ":") (expression_statement "pbVar24 = &DAT_000000b2;" (assignment_expression "pbVar24 = &DAT_000000b2" (identifier "pbVar24") (= "=") (pointer_expression "&DAT_000000b2" (& "&") (identifier "DAT_000000b2"))) (; ";"))) (expression_statement "pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);" (assignment_expression "pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" (identifier "pbVar43") (= "=") (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0x120)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0x120" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0x120")) () ")")))) (; ";")) (expression_statement "pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);" (assignment_expression "pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8)" (identifier "pbVar28") (= "=") (cast_expression "(byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar15 + -0x7fc8) + -0xe8)" (( "(") (binary_expression "*(int *)(iVar15 + -0x7fc8) + -0xe8" (pointer_expression "*(int *)(iVar15 + -0x7fc8)" (* "*") (cast_expression "(int *)(iVar15 + -0x7fc8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + -0x7fc8)" (( "(") (binary_expression "iVar15 + -0x7fc8" (identifier "iVar15") (+ "+") (number_literal "-0x7fc8")) () ")")))) (+ "+") (number_literal "-0xe8")) () ")")))) (; ";")) (expression_statement "(**(code **)(iVar15 + -0x7bb0))();" (call_expression "(**(code **)(iVar15 + -0x7bb0))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb0))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7bb0)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7bb0)" (* "*") (cast_expression "(code **)(iVar15 + -0x7bb0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7bb0)" (( "(") (binary_expression "iVar15 + -0x7bb0" (identifier "iVar15") (+ "+") (number_literal "-0x7bb0")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x79d8)" (* "*") (cast_expression "(code **)(iVar15 + -0x79d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79d8)" (( "(") (binary_expression "iVar15 + -0x79d8" (identifier "iVar15") (+ "+") (number_literal "-0x79d8")) () ")"))))) (; ";")) (expression_statement "pcVar42 = mbsnwidth;" (assignment_expression "pcVar42 = mbsnwidth" (identifier "pcVar42") (= "=") (identifier "mbsnwidth")) (; ";")) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);" (assignment_expression "puVar8 = *(undefined4 **)(pcVar33 + 0x46c58)" (identifier "puVar8") (= "=") (pointer_expression "*(undefined4 **)(pcVar33 + 0x46c58)" (* "*") (cast_expression "(undefined4 **)(pcVar33 + 0x46c58)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x46c58)" (( "(") (binary_expression "pcVar33 + 0x46c58" (identifier "pcVar33") (+ "+") (number_literal "0x46c58")) () ")"))))) (; ";")) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x46bd8);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x46bd8)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(pcVar33 + 0x46bd8)" (* "*") (cast_expression "(code **)(pcVar33 + 0x46bd8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x46bd8)" (( "(") (binary_expression "pcVar33 + 0x46bd8" (identifier "pcVar33") (+ "+") (number_literal "0x46bd8")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(puVar35 + -0x1bc) = puVar8;" (assignment_expression "*(undefined4 **)(puVar35 + -0x1bc) = puVar8" (pointer_expression "*(undefined4 **)(puVar35 + -0x1bc)" (* "*") (cast_expression "(undefined4 **)(puVar35 + -0x1bc)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1bc)" (( "(") (binary_expression "puVar35 + -0x1bc" (identifier "puVar35") (+ "+") (number_literal "-0x1bc")) () ")")))) (= "=") (identifier "puVar8")) (; ";")) (expression_statement "*(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;" (assignment_expression "*(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0" (pointer_expression "*(code **)(puVar35 + -0x1c8)" (* "*") (cast_expression "(code **)(puVar35 + -0x1c8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1c8)" (( "(") (binary_expression "puVar35 + -0x1c8" (identifier "puVar35") (+ "+") (number_literal "-0x1c8")) () ")")))) (= "=") (binary_expression "pcVar33 + 0x4e5f0" (identifier "pcVar33") (+ "+") (number_literal "0x4e5f0"))) (; ";")) (expression_statement "*(byte **)(puVar35 + -400) = unaff_s6;" (assignment_expression "*(byte **)(puVar35 + -400) = unaff_s6" (pointer_expression "*(byte **)(puVar35 + -400)" (* "*") (cast_expression "(byte **)(puVar35 + -400)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -400)" (( "(") (binary_expression "puVar35 + -400" (identifier "puVar35") (+ "+") (number_literal "-400")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x1a4) = pbVar29;" (assignment_expression "*(byte **)(puVar35 + -0x1a4) = pbVar29" (pointer_expression "*(byte **)(puVar35 + -0x1a4)" (* "*") (cast_expression "(byte **)(puVar35 + -0x1a4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1a4)" (( "(") (binary_expression "puVar35 + -0x1a4" (identifier "puVar35") (+ "+") (number_literal "-0x1a4")) () ")")))) (= "=") (identifier "pbVar29")) (; ";")) (expression_statement "pbVar31 = pbVar28 + (int)pbVar43;" (assignment_expression "pbVar31 = pbVar28 + (int)pbVar43" (identifier "pbVar31") (= "=") (binary_expression "pbVar28 + (int)pbVar43" (identifier "pbVar28") (+ "+") (cast_expression "(int)pbVar43" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar43")))) (; ";")) (expression_statement "*(code **)(puVar35 + -0x184) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -0x184) = pcVar42" (pointer_expression "*(code **)(puVar35 + -0x184)" (* "*") (cast_expression "(code **)(puVar35 + -0x184)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x184)" (( "(") (binary_expression "puVar35 + -0x184" (identifier "puVar35") (+ "+") (number_literal "-0x184")) () ")")))) (= "=") (identifier "pcVar42")) (; ";")) (expression_statement "*(undefined1 **)(puVar35 + -0x188) = puVar39;" (assignment_expression "*(undefined1 **)(puVar35 + -0x188) = puVar39" (pointer_expression "*(undefined1 **)(puVar35 + -0x188)" (* "*") (cast_expression "(undefined1 **)(puVar35 + -0x188)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x188)" (( "(") (binary_expression "puVar35 + -0x188" (identifier "puVar35") (+ "+") (number_literal "-0x188")) () ")")))) (= "=") (identifier "puVar39")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x18c) = pbVar23;" (assignment_expression "*(byte **)(puVar35 + -0x18c) = pbVar23" (pointer_expression "*(byte **)(puVar35 + -0x18c)" (* "*") (cast_expression "(byte **)(puVar35 + -0x18c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x18c)" (( "(") (binary_expression "puVar35 + -0x18c" (identifier "puVar35") (+ "+") (number_literal "-0x18c")) () ")")))) (= "=") (identifier "pbVar23")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x194) = unaff_s5;" (assignment_expression "*(byte **)(puVar35 + -0x194) = unaff_s5" (pointer_expression "*(byte **)(puVar35 + -0x194)" (* "*") (cast_expression "(byte **)(puVar35 + -0x194)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x194)" (( "(") (binary_expression "puVar35 + -0x194" (identifier "puVar35") (+ "+") (number_literal "-0x194")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x198) = unaff_s4;" (assignment_expression "*(byte **)(puVar35 + -0x198) = unaff_s4" (pointer_expression "*(byte **)(puVar35 + -0x198)" (* "*") (cast_expression "(byte **)(puVar35 + -0x198)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x198)" (( "(") (binary_expression "puVar35 + -0x198" (identifier "puVar35") (+ "+") (number_literal "-0x198")) () ")")))) (= "=") (identifier "unaff_s4")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x19c) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x19c) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x19c)" (* "*") (cast_expression "(byte **)(puVar35 + -0x19c)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x19c)" (( "(") (binary_expression "puVar35 + -0x19c" (identifier "puVar35") (+ "+") (number_literal "-0x19c")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x1a0) = pbVar10;" (assignment_expression "*(byte **)(puVar35 + -0x1a0) = pbVar10" (pointer_expression "*(byte **)(puVar35 + -0x1a0)" (* "*") (cast_expression "(byte **)(puVar35 + -0x1a0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1a0)" (( "(") (binary_expression "puVar35 + -0x1a0" (identifier "puVar35") (+ "+") (number_literal "-0x1a0")) () ")")))) (= "=") (identifier "pbVar10")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x1a8) = param_1;" (assignment_expression "*(byte **)(puVar35 + -0x1a8) = param_1" (pointer_expression "*(byte **)(puVar35 + -0x1a8)" (* "*") (cast_expression "(byte **)(puVar35 + -0x1a8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1a8)" (( "(") (binary_expression "puVar35 + -0x1a8" (identifier "puVar35") (+ "+") (number_literal "-0x1a8")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x178) = pbVar24;" (assignment_expression "*(byte **)(puVar35 + -0x178) = pbVar24" (pointer_expression "*(byte **)(puVar35 + -0x178)" (* "*") (cast_expression "(byte **)(puVar35 + -0x178)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x178)" (( "(") (binary_expression "puVar35 + -0x178" (identifier "puVar35") (+ "+") (number_literal "-0x178")) () ")")))) (= "=") (identifier "pbVar24")) (; ";")) (expression_statement "*(undefined4 *)(puVar35 + -0x1ac) = *puVar8;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1ac) = *puVar8" (pointer_expression "*(undefined4 *)(puVar35 + -0x1ac)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x1ac)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1ac)" (( "(") (binary_expression "puVar35 + -0x1ac" (identifier "puVar35") (+ "+") (number_literal "-0x1ac")) () ")")))) (= "=") (pointer_expression "*puVar8" (* "*") (identifier "puVar8"))) (; ";")) (expression_statement "uVar5 = (*pcVar40)();" (assignment_expression "uVar5 = (*pcVar40)()" (identifier "uVar5") (= "=") (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar35 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c8)" (( "(") (binary_expression "puVar35 + -0x1c8" (identifier "puVar35") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (uVar5 < 2) {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }\n  else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" (if "if") (parenthesized_expression "(uVar5 < 2)" (( "(") (binary_expression "uVar5 < 2" (identifier "uVar5") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }\n  }" ({ "{") (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (pbVar28 < pbVar31) {\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }" (if "if") (parenthesized_expression "(pbVar28 < pbVar31)" (( "(") (binary_expression "pbVar28 < pbVar31" (identifier "pbVar28") (< "<") (identifier "pbVar31")) () ")")) (compound_statement "{\n      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();\n      pbVar43 = (byte *)0x7fffffff;\n      iVar15 = *(int *)(puVar35 + -0x1c8);\n      do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);\n      piVar19 = *(int **)(puVar35 + -0x1bc);\n      goto LAB_0002f064;\n    }" ({ "{") (expression_statement "piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();" (assignment_expression "piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))()" (identifier "piVar13") (= "=") (cast_expression "(int *)(**(code **)(iVar15 + -0x7bb4))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(iVar15 + -0x7bb4))()" (parenthesized_expression "(**(code **)(iVar15 + -0x7bb4))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x7bb4)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x7bb4)" (* "*") (cast_expression "(code **)(iVar15 + -0x7bb4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x7bb4)" (( "(") (binary_expression "iVar15 + -0x7bb4" (identifier "iVar15") (+ "+") (number_literal "-0x7bb4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "pbVar43 = (byte *)0x7fffffff;" (assignment_expression "pbVar43 = (byte *)0x7fffffff" (identifier "pbVar43") (= "=") (cast_expression "(byte *)0x7fffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7fffffff"))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar35 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c8)" (( "(") (binary_expression "puVar35 + -0x1c8" (identifier "puVar35") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (do_statement "do {\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      } while (pbVar31 != pbVar24);" (do "do") (compound_statement "{\n        pbVar24 = pbVar28 + 1;\n        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);\n        if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }\n        pbVar28 = pbVar24;\n      }" ({ "{") (expression_statement "pbVar24 = pbVar28 + 1;" (assignment_expression "pbVar24 = pbVar28 + 1" (identifier "pbVar24") (= "=") (binary_expression "pbVar28 + 1" (identifier "pbVar28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);" (assignment_expression "uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" (identifier "uVar1") (= "=") (pointer_expression "*(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" (* "*") (cast_expression "(ushort *)(*piVar13 + (uint)*pbVar28 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar13 + (uint)*pbVar28 * 2)" (( "(") (binary_expression "*piVar13 + (uint)*pbVar28 * 2" (pointer_expression "*piVar13" (* "*") (identifier "piVar13")) (+ "+") (binary_expression "(uint)*pbVar28 * 2" (binary_expression "(uint)*pbVar28" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar28")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if ((uVar1 & 0x40) == 0) {\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }\n        else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" (if "if") (parenthesized_expression "((uVar1 & 0x40) == 0)" (( "(") (binary_expression "(uVar1 & 0x40) == 0" (parenthesized_expression "(uVar1 & 0x40)" (( "(") (binary_expression "uVar1 & 0x40" (identifier "uVar1") (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;\n          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;\n        }" ({ "{") (if_statement "if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;" (if "if") (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 2) != 0)" (( "(") (binary_expression "(*(uint *)(puVar35 + -0x178) & 2) != 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 2)" (( "(") (binary_expression "*(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x178)" (* "*") (cast_expression "(uint *)(puVar35 + -0x178)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x178)" (( "(") (binary_expression "puVar35 + -0x178" (identifier "puVar35") (+ "+") (number_literal "-0x178")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002f210;" (goto "goto") (statement_identifier "LAB_0002f210") (; ";"))) (if_statement "if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;" (if "if") (parenthesized_expression "((uVar1 & 0x200) == 0)" (( "(") (binary_expression "(uVar1 & 0x200) == 0" (parenthesized_expression "(uVar1 & 0x200)" (( "(") (binary_expression "uVar1 & 0x200" (identifier "uVar1") (& "&") (number_literal "0x200")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002f1dc;" (goto "goto") (statement_identifier "LAB_0002f1dc") (; ";"))) (} "}")) (else_clause "else {\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" (else "else") (compound_statement "{\nLAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);\n          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;\n          pbVar6 = pbVar6 + 1;\n        }" ({ "{") (labeled_statement "LAB_0002f1dc:\n          piVar19 = *(int **)(puVar35 + -0x1bc);" (statement_identifier "LAB_0002f1dc") (: ":") (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" (identifier "piVar19") (= "=") (pointer_expression "*(int **)(puVar35 + -0x1bc)" (* "*") (cast_expression "(int **)(puVar35 + -0x1bc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1bc)" (( "(") (binary_expression "puVar35 + -0x1bc" (identifier "puVar35") (+ "+") (number_literal "-0x1bc")) () ")"))))) (; ";"))) (if_statement "if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;" (if "if") (parenthesized_expression "(pbVar6 == (byte *)0x7fffffff)" (( "(") (binary_expression "pbVar6 == (byte *)0x7fffffff" (identifier "pbVar6") (== "==") (cast_expression "(byte *)0x7fffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7fffffff"))) () ")")) (goto_statement "goto LAB_0002f064;" (goto "goto") (statement_identifier "LAB_0002f064") (; ";"))) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "pbVar28 = pbVar24;" (assignment_expression "pbVar28 = pbVar24" (identifier "pbVar28") (= "=") (identifier "pbVar24")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar31 != pbVar24)" (( "(") (binary_expression "pbVar31 != pbVar24" (identifier "pbVar31") (!= "!=") (identifier "pbVar24")) () ")")) (; ";")) (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" (identifier "piVar19") (= "=") (pointer_expression "*(int **)(puVar35 + -0x1bc)" (* "*") (cast_expression "(int **)(puVar35 + -0x1bc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1bc)" (( "(") (binary_expression "puVar35 + -0x1bc" (identifier "puVar35") (+ "+") (number_literal "-0x1bc")) () ")"))))) (; ";")) (goto_statement "goto LAB_0002f064;" (goto "goto") (statement_identifier "LAB_0002f064") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" (else "else") (compound_statement "{\n    pbVar6 = (byte *)0x0;\n    if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }\n  }" ({ "{") (expression_statement "pbVar6 = (byte *)0x0;" (assignment_expression "pbVar6 = (byte *)0x0" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (pbVar28 < pbVar31) {\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }" (if "if") (parenthesized_expression "(pbVar28 < pbVar31)" (( "(") (binary_expression "pbVar28 < pbVar31" (identifier "pbVar28") (< "<") (identifier "pbVar31")) () ")")) (compound_statement "{\n      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;\n      do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);\n    }" ({ "{") (expression_statement "*(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;" (assignment_expression "*(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x1c0)" (* "*") (cast_expression "(uint *)(puVar35 + -0x1c0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c0)" (( "(") (binary_expression "puVar35 + -0x1c0" (identifier "puVar35") (+ "+") (number_literal "-0x1c0")) () ")")))) (= "=") (binary_expression "*(uint *)(puVar35 + -0x178) & 2" (pointer_expression "*(uint *)(puVar35 + -0x178)" (* "*") (cast_expression "(uint *)(puVar35 + -0x178)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x178)" (( "(") (binary_expression "puVar35 + -0x178" (identifier "puVar35") (+ "+") (number_literal "-0x178")) () ")")))) (& "&") (number_literal "2"))) (; ";")) (do_statement "do {\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      } while (pbVar28 < pbVar31);" (do "do") (compound_statement "{\n        iVar9 = (int)(char)*pbVar28;\n        if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }\n      }" ({ "{") (expression_statement "iVar9 = (int)(char)*pbVar28;" (assignment_expression "iVar9 = (int)(char)*pbVar28" (identifier "iVar9") (= "=") (cast_expression "(int)(char)*pbVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar28" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar28" (* "*") (identifier "pbVar28"))))) (; ";")) (if_statement "if (iVar9 < 0x40) {\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }\n        else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" (if "if") (parenthesized_expression "(iVar9 < 0x40)" (( "(") (binary_expression "iVar9 < 0x40" (identifier "iVar9") (< "<") (number_literal "0x40")) () ")")) (compound_statement "{\n          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;\nLAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;\n          *(undefined4 *)(puVar35 + -0x1b0) = 0;\n          do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);\n        }" ({ "{") (if_statement "if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;" (if "if") (parenthesized_expression "((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4))" (( "(") (binary_expression "(0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)" (parenthesized_expression "(0x24 < iVar9)" (( "(") (binary_expression "0x24 < iVar9" (number_literal "0x24") (< "<") (identifier "iVar9")) () ")")) (|| "||") (parenthesized_expression "((iVar9 - 0x20U & 0xff) < 4)" (( "(") (binary_expression "(iVar9 - 0x20U & 0xff) < 4" (parenthesized_expression "(iVar9 - 0x20U & 0xff)" (( "(") (binary_expression "iVar9 - 0x20U & 0xff" (binary_expression "iVar9 - 0x20U" (identifier "iVar9") (- "-") (number_literal "0x20U")) (& "&") (number_literal "0xff")) () ")")) (< "<") (number_literal "4")) () ")"))) () ")")) (goto_statement "goto LAB_0002f050;" (goto "goto") (statement_identifier "LAB_0002f050") (; ";"))) (labeled_statement "LAB_0002f0c8:\n          *(undefined4 *)(puVar35 + -0x1b4) = 0;" (statement_identifier "LAB_0002f0c8") (: ":") (expression_statement "*(undefined4 *)(puVar35 + -0x1b4) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1b4) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x1b4)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x1b4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1b4)" (( "(") (binary_expression "puVar35 + -0x1b4" (identifier "puVar35") (+ "+") (number_literal "-0x1b4")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined4 *)(puVar35 + -0x1b0) = 0;" (assignment_expression "*(undefined4 *)(puVar35 + -0x1b0) = 0" (pointer_expression "*(undefined4 *)(puVar35 + -0x1b0)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x1b0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1b0)" (( "(") (binary_expression "puVar35 + -0x1b0" (identifier "puVar35") (+ "+") (number_literal "-0x1b0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          } while (iVar9 == 0);" (do "do") (compound_statement "{\n            pbVar43 = pbVar28;\n            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }\n            if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }\n            if (iVar9 == 0) {\n              iVar9 = 1;\n            }\n            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n            if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }\n            pbVar28 = pbVar28 + iVar9;\n            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);\n            iVar15 = *(int *)(puVar35 + -0x1c8);\n          }" ({ "{") (expression_statement "pbVar43 = pbVar28;" (assignment_expression "pbVar43 = pbVar28" (identifier "pbVar43") (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4);" (assignment_expression "iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" (identifier "iVar9") (= "=") (call_expression "rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" (identifier "rpl_mbrtowc") (argument_list "(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,\n                                puVar35 + -0x1b4)" (( "(") (binary_expression "puVar35 + -0x1b8" (identifier "puVar35") (+ "+") (number_literal "-0x1b8")) (, ",") (identifier "pbVar28") (, ",") (binary_expression "(int)pbVar31 - (int)pbVar28" (cast_expression "(int)pbVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar31")) (- "-") (cast_expression "(int)pbVar28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar28"))) (, ",") (binary_expression "puVar35 + -0x1b4" (identifier "puVar35") (+ "+") (number_literal "-0x1b4")) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar35 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c8)" (( "(") (binary_expression "puVar35 + -0x1c8" (identifier "puVar35") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar9 == -1) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;\n              goto LAB_0002f210;\n            }" ({ "{") (if_statement "if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;" (if "if") (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(puVar35 + -0x178) & 1) == 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 1)" (( "(") (binary_expression "*(uint *)(puVar35 + -0x178) & 1" (pointer_expression "*(uint *)(puVar35 + -0x178)" (* "*") (cast_expression "(uint *)(puVar35 + -0x178)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x178)" (( "(") (binary_expression "puVar35 + -0x178" (identifier "puVar35") (+ "+") (number_literal "-0x178")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002f050;" (goto "goto") (statement_identifier "LAB_0002f050") (; ";"))) (goto_statement "goto LAB_0002f210;" (goto "goto") (statement_identifier "LAB_0002f210") (; ";")) (} "}"))) (if_statement "if (iVar9 == -2) {\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }" (if "if") (parenthesized_expression "(iVar9 == -2)" (( "(") (binary_expression "iVar9 == -2" (identifier "iVar9") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;\n              pbVar6 = pbVar6 + 1;\n              pbVar28 = pbVar31;\n              break;\n            }" ({ "{") (if_statement "if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;" (if "if") (parenthesized_expression "((*(uint *)(puVar35 + -0x178) & 1) != 0)" (( "(") (binary_expression "(*(uint *)(puVar35 + -0x178) & 1) != 0" (parenthesized_expression "(*(uint *)(puVar35 + -0x178) & 1)" (( "(") (binary_expression "*(uint *)(puVar35 + -0x178) & 1" (pointer_expression "*(uint *)(puVar35 + -0x178)" (* "*") (cast_expression "(uint *)(puVar35 + -0x178)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x178)" (( "(") (binary_expression "puVar35 + -0x178" (identifier "puVar35") (+ "+") (number_literal "-0x178")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002f210;" (goto "goto") (statement_identifier "LAB_0002f210") (; ";"))) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar28 = pbVar31;" (assignment_expression "pbVar28 = pbVar31" (identifier "pbVar28") (= "=") (identifier "pbVar31")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (iVar9 == 0) {\n              iVar9 = 1;\n            }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar9 = 1;\n            }" ({ "{") (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8))" (identifier "iVar11") (= "=") (call_expression "(**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8))" (parenthesized_expression "(**(code **)(iVar15 + -0x797c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x797c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x797c)" (* "*") (cast_expression "(code **)(iVar15 + -0x797c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x797c)" (( "(") (binary_expression "iVar15 + -0x797c" (identifier "iVar15") (+ "+") (number_literal "-0x797c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x1b8))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x1b8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x1b8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1b8)" (( "(") (binary_expression "puVar35 + -0x1b8" (identifier "puVar35") (+ "+") (number_literal "-0x1b8")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar35 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c8)" (( "(") (binary_expression "puVar35 + -0x1c8" (identifier "puVar35") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar11 < 0) {\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }\n            else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" (if "if") (parenthesized_expression "(iVar11 < 0)" (( "(") (binary_expression "iVar11 < 0" (identifier "iVar11") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;\n              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));\n              iVar15 = *(int *)(puVar35 + -0x1c8);\n              if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }\n            }" ({ "{") (if_statement "if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;" (if "if") (parenthesized_expression "(*(int *)(puVar35 + -0x1c0) != 0)" (( "(") (binary_expression "*(int *)(puVar35 + -0x1c0) != 0" (pointer_expression "*(int *)(puVar35 + -0x1c0)" (* "*") (cast_expression "(int *)(puVar35 + -0x1c0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c0)" (( "(") (binary_expression "puVar35 + -0x1c0" (identifier "puVar35") (+ "+") (number_literal "-0x1c0")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002f210;" (goto "goto") (statement_identifier "LAB_0002f210") (; ";"))) (expression_statement "iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));" (assignment_expression "iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8))" (identifier "iVar11") (= "=") (call_expression "(**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8))" (parenthesized_expression "(**(code **)(iVar15 + -0x79ec))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x79ec)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x79ec)" (* "*") (cast_expression "(code **)(iVar15 + -0x79ec)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79ec)" (( "(") (binary_expression "iVar15 + -0x79ec" (identifier "iVar15") (+ "+") (number_literal "-0x79ec")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar35 + -0x1b8))" (( "(") (pointer_expression "*(undefined4 *)(puVar35 + -0x1b8)" (* "*") (cast_expression "(undefined4 *)(puVar35 + -0x1b8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1b8)" (( "(") (binary_expression "puVar35 + -0x1b8" (identifier "puVar35") (+ "+") (number_literal "-0x1b8")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar35 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c8)" (( "(") (binary_expression "puVar35 + -0x1c8" (identifier "puVar35") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (if_statement "if (iVar11 == 0) {\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;\n                pbVar6 = pbVar6 + 1;\n              }" ({ "{") (if_statement "if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;" (if "if") (parenthesized_expression "(pbVar6 == (byte *)0x7fffffff)" (( "(") (binary_expression "pbVar6 == (byte *)0x7fffffff" (identifier "pbVar6") (== "==") (cast_expression "(byte *)0x7fffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7fffffff"))) () ")")) (goto_statement "goto LAB_0002f234;" (goto "goto") (statement_identifier "LAB_0002f234") (; ";"))) (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" (else "else") (compound_statement "{\n              if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }\n              pbVar6 = pbVar6 + iVar11;\n            }" ({ "{") (if_statement "if (0x7fffffff - (int)pbVar6 < iVar11) {\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }" (if "if") (parenthesized_expression "(0x7fffffff - (int)pbVar6 < iVar11)" (( "(") (binary_expression "0x7fffffff - (int)pbVar6 < iVar11" (binary_expression "0x7fffffff - (int)pbVar6" (number_literal "0x7fffffff") (- "-") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6"))) (< "<") (identifier "iVar11")) () ")")) (compound_statement "{\nLAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;\n                goto LAB_0002f060;\n              }" ({ "{") (labeled_statement "LAB_0002f234:\n                pbVar6 = (byte *)0x7fffffff;" (statement_identifier "LAB_0002f234") (: ":") (expression_statement "pbVar6 = (byte *)0x7fffffff;" (assignment_expression "pbVar6 = (byte *)0x7fffffff" (identifier "pbVar6") (= "=") (cast_expression "(byte *)0x7fffffff" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x7fffffff"))) (; ";"))) (goto_statement "goto LAB_0002f060;" (goto "goto") (statement_identifier "LAB_0002f060") (; ";")) (} "}"))) (expression_statement "pbVar6 = pbVar6 + iVar11;" (assignment_expression "pbVar6 = pbVar6 + iVar11" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + iVar11" (identifier "pbVar6") (+ "+") (identifier "iVar11"))) (; ";")) (} "}")))) (expression_statement "pbVar28 = pbVar28 + iVar9;" (assignment_expression "pbVar28 = pbVar28 + iVar9" (identifier "pbVar28") (= "=") (binary_expression "pbVar28 + iVar9" (identifier "pbVar28") (+ "+") (identifier "iVar9"))) (; ";")) (expression_statement "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);" (assignment_expression "iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4)" (parenthesized_expression "(**(code **)(iVar15 + -0x799c))" (( "(") (pointer_expression "**(code **)(iVar15 + -0x799c)" (* "*") (pointer_expression "*(code **)(iVar15 + -0x799c)" (* "*") (cast_expression "(code **)(iVar15 + -0x799c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x799c)" (( "(") (binary_expression "iVar15 + -0x799c" (identifier "iVar15") (+ "+") (number_literal "-0x799c")) () ")"))))) () ")")) (argument_list "(puVar35 + -0x1b4)" (( "(") (binary_expression "puVar35 + -0x1b4" (identifier "puVar35") (+ "+") (number_literal "-0x1b4")) () ")")))) (; ";")) (expression_statement "iVar15 = *(int *)(puVar35 + -0x1c8);" (assignment_expression "iVar15 = *(int *)(puVar35 + -0x1c8)" (identifier "iVar15") (= "=") (pointer_expression "*(int *)(puVar35 + -0x1c8)" (* "*") (cast_expression "(int *)(puVar35 + -0x1c8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1c8)" (( "(") (binary_expression "puVar35 + -0x1c8" (identifier "puVar35") (+ "+") (number_literal "-0x1c8")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" (else "else") (compound_statement "{\n          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;\nLAB_0002f050:\n          pbVar6 = pbVar6 + 1;\n          pbVar28 = pbVar28 + 1;\n        }" ({ "{") (if_statement "if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))\n          goto LAB_0002f0c8;" (if "if") (parenthesized_expression "((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))" (( "(") (binary_expression "(iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" (parenthesized_expression "(iVar9 < 0x41)" (( "(") (binary_expression "iVar9 < 0x41" (identifier "iVar9") (< "<") (number_literal "0x41")) () ")")) (|| "||") (parenthesized_expression "((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))))" (( "(") (parenthesized_expression "(0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))" (( "(") (binary_expression "0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff))" (binary_expression "0x5f < iVar9" (number_literal "0x5f") (< "<") (identifier "iVar9")) (&& "&&") (parenthesized_expression "(0x1d < (iVar9 - 0x61U & 0xff))" (( "(") (binary_expression "0x1d < (iVar9 - 0x61U & 0xff)" (number_literal "0x1d") (< "<") (parenthesized_expression "(iVar9 - 0x61U & 0xff)" (( "(") (binary_expression "iVar9 - 0x61U & 0xff" (binary_expression "iVar9 - 0x61U" (identifier "iVar9") (- "-") (number_literal "0x61U")) (& "&") (number_literal "0xff")) () ")"))) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0002f0c8;" (goto "goto") (statement_identifier "LAB_0002f0c8") (; ";"))) (labeled_statement "LAB_0002f050:\n          pbVar6 = pbVar6 + 1;" (statement_identifier "LAB_0002f050") (: ":") (expression_statement "pbVar6 = pbVar6 + 1;" (assignment_expression "pbVar6 = pbVar6 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + 1" (identifier "pbVar6") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "pbVar28 = pbVar28 + 1;" (assignment_expression "pbVar28 = pbVar28 + 1" (identifier "pbVar28") (= "=") (binary_expression "pbVar28 + 1" (identifier "pbVar28") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(pbVar28 < pbVar31)" (( "(") (binary_expression "pbVar28 < pbVar31" (identifier "pbVar28") (< "<") (identifier "pbVar31")) () ")")) (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_0002f060:\n  piVar19 = *(int **)(puVar35 + -0x1bc);" (statement_identifier "LAB_0002f060") (: ":") (expression_statement "piVar19 = *(int **)(puVar35 + -0x1bc);" (assignment_expression "piVar19 = *(int **)(puVar35 + -0x1bc)" (identifier "piVar19") (= "=") (pointer_expression "*(int **)(puVar35 + -0x1bc)" (* "*") (cast_expression "(int **)(puVar35 + -0x1bc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1bc)" (( "(") (binary_expression "puVar35 + -0x1bc" (identifier "puVar35") (+ "+") (number_literal "-0x1bc")) () ")"))))) (; ";"))) (labeled_statement "LAB_0002f064:\n  iVar9 = *(int *)(puVar35 + -0x1ac);" (statement_identifier "LAB_0002f064") (: ":") (expression_statement "iVar9 = *(int *)(puVar35 + -0x1ac);" (assignment_expression "iVar9 = *(int *)(puVar35 + -0x1ac)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(puVar35 + -0x1ac)" (* "*") (cast_expression "(int *)(puVar35 + -0x1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar35 + -0x1ac)" (( "(") (binary_expression "puVar35 + -0x1ac" (identifier "puVar35") (+ "+") (number_literal "-0x1ac")) () ")"))))) (; ";"))) (if_statement "if (iVar9 == *piVar19) {\n    return pbVar6;\n  }" (if "if") (parenthesized_expression "(iVar9 == *piVar19)" (( "(") (binary_expression "iVar9 == *piVar19" (identifier "iVar9") (== "==") (pointer_expression "*piVar19" (* "*") (identifier "piVar19"))) () ")")) (compound_statement "{\n    return pbVar6;\n  }" ({ "{") (return_statement "return pbVar6;" (return "return") (identifier "pbVar6") (; ";")) (} "}"))) (expression_statement "pcVar33 = *(code **)(iVar15 + -0x79d8);" (assignment_expression "pcVar33 = *(code **)(iVar15 + -0x79d8)" (identifier "pcVar33") (= "=") (pointer_expression "*(code **)(iVar15 + -0x79d8)" (* "*") (cast_expression "(code **)(iVar15 + -0x79d8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + -0x79d8)" (( "(") (binary_expression "iVar15 + -0x79d8" (identifier "iVar15") (+ "+") (number_literal "-0x79d8")) () ")"))))) (; ";")) (expression_statement "pcVar42 = gnu_mbswidth;" (assignment_expression "pcVar42 = gnu_mbswidth" (identifier "pcVar42") (= "=") (identifier "gnu_mbswidth")) (; ";")) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" (( "(") (pointer_expression "*pcVar33" (* "*") (identifier "pcVar33")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar40 = *(code **)(pcVar33 + 0x468a8);" (assignment_expression "pcVar40 = *(code **)(pcVar33 + 0x468a8)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(pcVar33 + 0x468a8)" (* "*") (cast_expression "(code **)(pcVar33 + 0x468a8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar33 + 0x468a8)" (( "(") (binary_expression "pcVar33 + 0x468a8" (identifier "pcVar33") (+ "+") (number_literal "0x468a8")) () ")"))))) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x1e0) = pbVar31;" (assignment_expression "*(byte **)(puVar35 + -0x1e0) = pbVar31" (pointer_expression "*(byte **)(puVar35 + -0x1e0)" (* "*") (cast_expression "(byte **)(puVar35 + -0x1e0)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1e0)" (( "(") (binary_expression "puVar35 + -0x1e0" (identifier "puVar35") (+ "+") (number_literal "-0x1e0")) () ")")))) (= "=") (identifier "pbVar31")) (; ";")) (expression_statement "*(byte **)(puVar35 + -0x1e4) = pbVar6;" (assignment_expression "*(byte **)(puVar35 + -0x1e4) = pbVar6" (pointer_expression "*(byte **)(puVar35 + -0x1e4)" (* "*") (cast_expression "(byte **)(puVar35 + -0x1e4)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1e4)" (( "(") (binary_expression "puVar35 + -0x1e4" (identifier "puVar35") (+ "+") (number_literal "-0x1e4")) () ")")))) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(code **)(puVar35 + -0x1dc) = pcVar42;" (assignment_expression "*(code **)(puVar35 + -0x1dc) = pcVar42" (pointer_expression "*(code **)(puVar35 + -0x1dc)" (* "*") (cast_expression "(code **)(puVar35 + -0x1dc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1dc)" (( "(") (binary_expression "puVar35 + -0x1dc" (identifier "puVar35") (+ "+") (number_literal "-0x1dc")) () ")")))) (= "=") (identifier "pcVar42")) (; ";")) (expression_statement "*(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;" (assignment_expression "*(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334" (pointer_expression "*(code **)(puVar35 + -0x1f0)" (* "*") (cast_expression "(code **)(puVar35 + -0x1f0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar35 + -0x1f0)" (( "(") (binary_expression "puVar35 + -0x1f0" (identifier "puVar35") (+ "+") (number_literal "-0x1f0")) () ")")))) (= "=") (binary_expression "pcVar33 + 0x4e334" (identifier "pcVar33") (+ "+") (number_literal "0x4e334"))) (; ";")) (expression_statement "uVar41 = (*pcVar40)();" (assignment_expression "uVar41 = (*pcVar40)()" (identifier "uVar41") (= "=") (call_expression "(*pcVar40)()" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);" (assignment_expression "pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43)" (identifier "pbVar28") (= "=") (cast_expression "(byte *)mbsnwidth(iVar9,uVar41,pbVar43)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "mbsnwidth(iVar9,uVar41,pbVar43)" (identifier "mbsnwidth") (argument_list "(iVar9,uVar41,pbVar43)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar41") (, ",") (identifier "pbVar43") () ")"))))) (; ";")) (return_statement "return pbVar28;" (return "return") (identifier "pbVar28") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) 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 (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (identifier)) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (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: (primitive_type) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (while_statement condition: (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: (identifier))))) right: (identifier))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) 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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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 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 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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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 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 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 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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (identifier)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (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 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: (identifier))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) condition: (parenthesized_expression (true))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (return_statement (identifier)))) (goto_statement label: (statement_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)))))))) (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: (primitive_type) 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: (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: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (break_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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (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)))))) (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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (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 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (labeled_statement label: (statement_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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (goto_statement label: (statement_identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))))))) condition: (parenthesized_expression (true))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) 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: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) 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))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (identifier) (number_literal) (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))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (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)) (number_literal) (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)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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 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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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 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 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 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 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 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 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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (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: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (return_statement (identifier))))) alternative: (else_clause (compound_statement (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) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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 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: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (identifier))) right: (identifier)))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) condition: (parenthesized_expression (true)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (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))) 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: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))) 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: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (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: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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 (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (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: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (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)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (identifier)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_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: (break_statement))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (break_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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) condition: (parenthesized_expression (true))))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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 (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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)) (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)) (number_literal) (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)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_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) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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 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 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 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (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: (identifier)))) 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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (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: (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)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (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: (identifier))) (break_statement))) (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 (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator 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 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 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 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: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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 (identifier) (identifier) (identifier)))))) (return_statement (identifier)))))

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

{
  ushort uVar1;
  bool bVar2;
  undefined4 *puVar3;
  byte *pbVar4;
  uint uVar5;
  byte *pbVar6;
  uint uVar7;
  undefined4 *puVar8;
  int iVar9;
  byte *pbVar10;
  int iVar11;
  char cVar14;
  undefined4 *puVar12;
  int *piVar13;
  int iVar15;
  byte bVar20;
  undefined4 uVar16;
  byte *pbVar17;
  undefined4 *puVar18;
  int *piVar19;
  byte *pbVar21;
  undefined4 *puVar22;
  byte *pbVar23;
  byte *pbVar24;
  undefined4 uVar25;
  byte *pbVar26;
  uint *puVar27;
  byte *pbVar28;
  byte *pbVar29;
  char *pcVar30;
  byte *pbVar31;
  int unaff_s2;
  undefined1 *unaff_s3;
  byte *unaff_s4;
  byte *unaff_s5;
  byte *unaff_s6;
  undefined4 unaff_s7;
  undefined *puVar32;
  code *pcVar33;
  undefined1 *puVar34;
  undefined1 *puVar35;
  undefined1 *puVar36;
  undefined1 *puVar37;
  undefined1 *puVar38;
  undefined1 *puVar39;
  code *pcVar40;
  undefined4 uVar41;
  code *pcVar42;
  byte *pbVar43;
  undefined1 auStack_38 [16];
  undefined4 local_1c;
  int local_14;
  
  pbVar28 = PTR___stack_chk_guard_00075be8;
  puVar34 = auStack_38;
  uVar5 = param_3 * 4;
  local_14 = *(int *)PTR___stack_chk_guard_00075be8;
  if (((int)uVar5 < 0) || (param_3 >> 0x1e != 0)) {
LAB_0002d620:
    pbVar6 = (byte *)0x0;
  }
  else {
    if (uVar5 < 0xfb1) {
      iVar15 = -(uVar5 + 0x16 & 0xfffffff8);
      puVar34 = auStack_38 + iVar15;
      uVar5 = (int)&local_1c + iVar15 + 3 & 0xfffffff0;
      pbVar6 = (byte *)0x0;
      puVar36 = auStack_38 + iVar15;
      if (uVar5 == 0) goto LAB_0002d5c8;
    }
    else {
      local_1c = param_2;
      uVar5 = (*(code *)PTR_mmalloca_000758dc)(uVar5);
      param_2 = local_1c;
      puVar36 = auStack_38;
      if (uVar5 == 0) goto LAB_0002d620;
    }
    puVar34 = puVar36;
    *(undefined4 *)(uVar5 + 4) = 1;
    if (2 < param_3) {
      puVar27 = (uint *)(uVar5 + 8);
      iVar15 = 0;
      uVar7 = 2;
      do {
        cVar14 = *(char *)(param_2 + iVar15);
        while (cVar14 != *(char *)(param_2 + uVar7 + -1)) {
          if (iVar15 == 0) {
            iVar15 = 0;
            *puVar27 = uVar7;
            goto LAB_0002d564;
          }
          iVar15 = iVar15 - *(int *)(uVar5 + iVar15 * 4);
          cVar14 = *(char *)(param_2 + iVar15);
        }
        iVar15 = iVar15 + 1;
        *puVar27 = uVar7 - iVar15;
LAB_0002d564:
        uVar7 = uVar7 + 1;
        puVar27 = puVar27 + 1;
      } while (param_3 != uVar7);
    }
    *param_4 = 0;
    uVar7 = 0;
    bVar20 = *param_1;
    pbVar6 = param_1;
LAB_0002d580:
    if (bVar20 != 0) {
      while (*(byte *)(param_2 + uVar7) != bVar20) {
        if (uVar7 == 0) {
          bVar20 = pbVar6[1];
          param_1 = param_1 + 1;
          pbVar6 = pbVar6 + 1;
          goto LAB_0002d580;
        }
        iVar15 = *(int *)(uVar5 + uVar7 * 4);
        param_1 = param_1 + iVar15;
        uVar7 = uVar7 - iVar15;
        if (bVar20 == 0) goto LAB_0002d5b8;
      }
      uVar7 = uVar7 + 1;
      if (param_3 == uVar7) {
        *param_4 = param_1;
        goto LAB_0002d5b8;
      }
      bVar20 = pbVar6[1];
      pbVar6 = pbVar6 + 1;
      goto LAB_0002d580;
    }
LAB_0002d5b8:
    (*(code *)PTR_freea_000758e0)();
    pbVar6 = (byte *)0x1;
  }
LAB_0002d5c8:
  if (local_14 == *(int *)pbVar28) {
    return pbVar6;
  }
  pcVar40 = FUN_0002d670;
  puVar32 = PTR___stack_chk_fail_00075ba8;
  (*(code *)PTR___stack_chk_fail_00075ba8)();
  pbVar24 = &DAT_000000b3;
  iVar15 = *(int *)(puVar32 + 0x47f48);
  pcVar33 = *(code **)(puVar32 + 0x48360);
  pbVar23 = (byte *)(*(int *)(puVar32 + 0x47f48) + -0x120);
  *(undefined **)(puVar34 + -0x10) = puVar32 + 0x4ff10;
  *(code **)(puVar34 + -4) = pcVar40;
  uVar41 = 0x2d6ac;
  iVar15 = iVar15 + -0x114;
  (*pcVar33)();
  puVar35 = puVar34 + -0x128;
  puVar38 = puVar34 + -0x128;
  puVar39 = puVar34 + -0x128;
  puVar37 = puVar34 + -0x128;
  puVar8 = *(undefined4 **)(pcVar33 + 0x4853c);
  pcVar40 = *(code **)(pcVar33 + 0x48238);
  *(undefined1 **)(puVar34 + -0x28) = auStack_38;
  *(undefined4 *)(puVar34 + -0x2c) = unaff_s7;
  *(undefined4 **)(puVar34 + -0x10c) = puVar8;
  *(code **)(puVar34 + -0x118) = pcVar33 + 0x4fed4;
  *(int *)(puVar34 + -0x108) = iVar15;
  *(undefined4 *)(puVar34 + -0x24) = uVar41;
  *(byte **)(puVar34 + -0x30) = unaff_s6;
  *(byte **)(puVar34 + -0x34) = unaff_s5;
  *(byte **)(puVar34 + -0x38) = unaff_s4;
  *(undefined1 **)(puVar34 + -0x3c) = unaff_s3;
  *(int *)(puVar34 + -0x40) = unaff_s2;
  *(byte **)(puVar34 + -0x44) = pbVar28;
  *(byte **)(puVar34 + -0x48) = param_1;
  *(byte **)(puVar34 + -0x110) = pbVar24;
  *(undefined4 *)(puVar34 + -0x4c) = *puVar8;
  pbVar6 = pbVar23;
  uVar5 = (*pcVar40)(pbVar23);
  iVar15 = *(int *)(puVar34 + -0x118);
  pbVar43 = (byte *)((ulonglong)uVar5 * 0x2c >> 0x20);
  *(uint *)(puVar34 + -0x104) = uVar5;
  puVar36 = puVar34 + -0x128;
  if ((-1 < (int)((ulonglong)uVar5 * 0x2c)) &&
     (pbVar24 = pbVar43, puVar36 = puVar34 + -0x128, pbVar43 == (byte *)0x0)) {
    if ((uint)(*(int *)(puVar34 + -0x104) * 0x2c) < 0xfb1) {
      iVar9 = -(*(int *)(puVar34 + -0x104) * 0x2c + 0x16U & 0xfffffff8);
      puVar35 = puVar34 + iVar9 + -0x128;
      param_1 = (byte *)((uint)(puVar34 + iVar9 + -0x109) & 0xfffffff0);
    }
    else {
      param_1 = (byte *)(**(code **)(iVar15 + -0x7ca4))();
      iVar15 = *(int *)(puVar34 + -0x118);
    }
    pbVar24 = pbVar43;
    puVar36 = puVar35;
    if (param_1 != (byte *)0x0) {
      unaff_s3 = puVar34 + -0xf0;
      uVar41 = *(undefined4 *)(iVar15 + -0x7c98);
      *(undefined4 *)(puVar34 + -0xf0) = 0;
      unaff_s2 = 1;
      *(undefined4 *)(puVar34 + -0xec) = 0;
      *(undefined4 *)(puVar34 + -0x100) = uVar41;
      unaff_s6 = puVar34 + -0xd8;
      *(byte **)(puVar34 + -0xe4) = pbVar23;
      puVar34[-0xf4] = 0;
      unaff_s5 = puVar34 + -0xd4;
      pbVar28 = (byte *)(*(int *)(puVar34 + -0x104) * 0x28);
      puVar34[-0xe8] = 0;
      *(byte **)(puVar34 + -0xfc) = param_1 + (int)pbVar28;
      unaff_s4 = param_1;
      do {
        if (puVar34[-0xf4] == '\0') {
          pbVar6 = (byte *)(uint)*pbVar23;
          if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >>
               ((uint)pbVar6 & 0x1f) & 1) == 0) {
            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s3);
            iVar15 = *(int *)(puVar34 + -0x118);
            if (iVar9 != 0) {
              puVar34[-0xf4] = 1;
              goto LAB_0002d840;
            }
            goto LAB_0002e0bc;
          }
          *(undefined4 *)(puVar34 + -0xe0) = 1;
          pbVar28 = (byte *)(int)(char)*pbVar23;
          puVar34[-0xdc] = 1;
          puVar34[-0xe8] = 1;
          *(byte **)(puVar34 + -0xd8) = pbVar28;
          if (pbVar28 == (byte *)0x0) goto LAB_0002d8cc;
LAB_0002d7f8:
          bVar20 = 1;
        }
        else {
LAB_0002d840:
          uVar41 = (**(code **)(iVar15 + -0x7a18))();
          pbVar43 = (byte *)strnlen1(pbVar23,uVar41);
          pbVar6 = pbVar23;
          iVar9 = rpl_mbrtowc(unaff_s6,pbVar23,pbVar43,unaff_s3);
          iVar15 = *(int *)(puVar34 + -0x118);
          *(int *)(puVar34 + -0xe0) = iVar9;
          if (iVar9 == -1) {
            *(undefined4 *)(puVar34 + -0xe0) = 1;
            bVar20 = 0;
            puVar34[-0xdc] = 0;
            puVar34[-0xe8] = 1;
          }
          else {
            if (iVar9 != -2) {
              if (iVar9 == 0) {
                *(undefined4 *)(puVar34 + -0xe0) = 1;
                pbVar28 = *(byte **)(puVar34 + -0xd8);
                if (**(char **)(puVar34 + -0xe4) != '\0') goto LAB_0002e098;
                if (pbVar28 != (byte *)0x0) {
                  pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);
                  goto LAB_0002dc58;
                }
              }
              else {
                pbVar28 = *(byte **)(puVar34 + -0xd8);
              }
              pcVar33 = *(code **)(iVar15 + -0x799c);
              pbVar23 = (byte *)0x1;
              puVar34[-0xdc] = 1;
              iVar9 = (*pcVar33)(unaff_s3);
              iVar15 = *(int *)(puVar34 + -0x118);
              if (iVar9 != 0) {
                puVar34[-0xf4] = 0;
              }
              puVar34[-0xe8] = 1;
              if (pbVar28 != (byte *)0x0) goto LAB_0002d7f8;
              goto LAB_0002d8cc;
            }
            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0xe4));
            iVar15 = *(int *)(puVar34 + -0x118);
            *(undefined4 *)(puVar34 + -0xe0) = uVar41;
            bVar20 = 0;
            puVar34[-0xdc] = 0;
            puVar34[-0xe8] = 1;
          }
        }
        pbVar43 = *(byte **)(puVar34 + -0xe0);
        if (*(byte **)(puVar34 + -0xe4) == unaff_s5) {
          uVar41 = (**(code **)(iVar15 + -0x7990))(unaff_s4 + 0x10,unaff_s5);
          iVar15 = *(int *)(puVar34 + -0x118);
          bVar20 = puVar34[-0xdc];
          pbVar43 = *(byte **)(puVar34 + -0xe0);
          *(undefined4 *)unaff_s4 = uVar41;
        }
        else {
          *(byte **)unaff_s4 = *(byte **)(puVar34 + -0xe4);
        }
        *(byte **)(unaff_s4 + 4) = pbVar43;
        unaff_s4[8] = bVar20;
        if (bVar20 != 0) {
          *(undefined4 *)(unaff_s4 + 0xc) = *(undefined4 *)(puVar34 + -0xd8);
        }
        unaff_s4 = unaff_s4 + 0x28;
        puVar34[-0xe8] = 0;
        pbVar23 = pbVar43 + *(int *)(puVar34 + -0xe4);
        *(byte **)(puVar34 + -0xe4) = pbVar23;
      } while( true );
    }
  }
  pbVar43 = (byte *)0x0;
LAB_0002db5c:
  pbVar10 = *(byte **)(puVar34 + -0x4c);
  pcVar33 = *(code **)(iVar15 + -0x79d8);
  puVar35 = puVar36;
  if (pbVar10 == (byte *)**(undefined4 **)(puVar34 + -0x10c)) {
    return pbVar43;
  }
  goto LAB_0002e0e0;
LAB_0002d8cc:
  uVar5 = *(uint *)(puVar34 + -0x104);
  *(undefined4 *)(*(int *)(puVar34 + -0xfc) + 4) = 1;
  if (uVar5 < 3) {
LAB_0002d988:
    uVar41 = *(undefined4 *)(iVar15 + -0x7c98);
    unaff_s4 = puVar34 + -0xb8;
    uVar16 = *(undefined4 *)(puVar34 + -0x108);
    unaff_s6 = puVar34 + -0x80;
    unaff_s2 = 0;
    *(undefined4 *)(puVar34 + -0xb8) = 0;
    *(undefined4 *)(puVar34 + -0x100) = uVar41;
    unaff_s3 = puVar34 + -0x68;
    unaff_s5 = puVar34 + -0xa0;
    *(undefined4 *)(puVar34 + -0xb4) = 0;
    *(undefined4 *)(puVar34 + -0x80) = 0;
    *(undefined4 *)(puVar34 + -0xac) = uVar16;
    **(undefined4 **)(puVar34 + -0x110) = 0;
    cVar14 = '\0';
    *(undefined4 *)(puVar34 + -0x7c) = 0;
    puVar34[-0xbc] = 0;
    puVar34[-0xb0] = 0;
    *(undefined4 *)(puVar34 + -0x74) = uVar16;
    puVar34[-0x84] = 0;
    puVar34[-0x78] = 0;
    pbVar24 = pbVar43;
joined_r0x0002d9dc:
    if (cVar14 == '\0') {
      pbVar23 = *(byte **)(puVar34 + -0x74);
      goto LAB_0002daa0;
    }
    iVar9 = *(int *)(puVar34 + -0x68);
    if (puVar34[-0x6c] != '\0') goto LAB_0002dae8;
LAB_0002d9f0:
    iVar11 = unaff_s2 * 4;
    pbVar43 = param_1 + unaff_s2 * 0x28;
LAB_0002da00:
    pbVar28 = *(byte **)(puVar34 + -0x70);
    pbVar24 = pbVar28;
    if (*(byte **)(pbVar43 + 4) == pbVar28) {
      pbVar23 = *(byte **)(puVar34 + -0x74);
      pcVar33 = *(code **)(iVar15 + -0x79c0);
      uVar41 = *(undefined4 *)pbVar43;
      *(int *)(puVar34 + -0x108) = iVar11;
      pbVar6 = pbVar23;
      iVar9 = (*pcVar33)(uVar41);
      iVar15 = *(int *)(puVar34 + -0x118);
      iVar11 = *(int *)(puVar34 + -0x108);
      if (iVar9 == 0) goto LAB_0002db1c;
      cVar14 = puVar34[-0xb0];
      if (unaff_s2 == 0) goto LAB_0002da1c;
      iVar9 = *(int *)(puVar34 + -0xfc);
    }
    else {
LAB_0002da10:
      iVar9 = *(int *)(puVar34 + -0xfc);
      if (unaff_s2 == 0) {
        cVar14 = puVar34[-0xb0];
LAB_0002da1c:
        if (cVar14 == '\0') {
          pbVar6 = *(byte **)(puVar34 + -0xac);
          if (puVar34[-0xbc] == '\0') {
            bVar20 = *pbVar6;
            if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(bVar20 >> 5) * 4) >> (bVar20 & 0x1f)
                & 1) != 0) {
              *(undefined4 *)(puVar34 + -0xa8) = 1;
              pbVar28 = (byte *)(int)(char)*pbVar6;
              puVar34[-0xa4] = 1;
              puVar34[-0xb0] = 1;
              *(byte **)(puVar34 + -0xa0) = pbVar28;
              pbVar6 = (byte *)(uint)bVar20;
              goto LAB_0002da70;
            }
            iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);
            iVar15 = *(int *)(puVar34 + -0x118);
            pbVar28 = pbVar6;
            if (iVar9 == 0) goto LAB_0002e0bc;
            puVar34[-0xbc] = 1;
          }
          uVar41 = (**(code **)(iVar15 + -0x7a18))();
          pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
          iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);
          iVar15 = *(int *)(puVar34 + -0x118);
          *(int *)(puVar34 + -0xa8) = iVar9;
          if (iVar9 == -1) {
            pbVar28 = *(byte **)(puVar34 + -0xac);
            puVar34[-0xa4] = 0;
            *(undefined4 *)(puVar34 + -0xa8) = 1;
            goto LAB_0002da7c;
          }
          pbVar28 = *(byte **)(puVar34 + -0xac);
          if (iVar9 == -2) {
            uVar41 = (**(code **)(iVar15 + -0x7a8c))(pbVar28);
            iVar15 = *(int *)(puVar34 + -0x118);
            *(undefined4 *)(puVar34 + -0xa8) = uVar41;
            puVar34[-0xa4] = 0;
            goto LAB_0002da7c;
          }
          if (iVar9 == 0) {
            *(undefined4 *)(puVar34 + -0xa8) = 1;
            bVar20 = *pbVar28;
            pbVar28 = *(byte **)(puVar34 + -0xa0);
            if (bVar20 != 0) goto LAB_0002e098;
            if (pbVar28 != (byte *)0x0) {
              pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);
              goto LAB_0002dc58;
            }
          }
          else {
            pbVar28 = *(byte **)(puVar34 + -0xa0);
          }
          pcVar33 = *(code **)(iVar15 + -0x799c);
          pbVar23 = (byte *)0x1;
          puVar34[-0xa4] = 1;
          iVar9 = (*pcVar33)(unaff_s4);
          iVar15 = *(int *)(puVar34 + -0x118);
          if (iVar9 != 0) {
            puVar34[-0xbc] = 0;
          }
          puVar34[-0xb0] = 1;
LAB_0002da70:
          pcVar33 = *(code **)(iVar15 + -0x7b80);
          if (pbVar28 == (byte *)0x0) goto LAB_0002ddd4;
        }
        else {
          pbVar28 = *(byte **)(puVar34 + -0xa0);
          if (puVar34[-0xa4] != '\0') goto LAB_0002da70;
        }
        pbVar28 = *(byte **)(puVar34 + -0xac);
LAB_0002da7c:
        puVar34[-0xb0] = 0;
        puVar34[-0x78] = 0;
        *(byte **)(puVar34 + -0xac) = pbVar28 + *(int *)(puVar34 + -0xa8);
        pbVar23 = (byte *)(*(int *)(puVar34 + -0x74) + *(int *)(puVar34 + -0x70));
        *(byte **)(puVar34 + -0x74) = pbVar23;
LAB_0002daa0:
        if (puVar34[-0x84] != '\0') goto LAB_0002dc78;
        pcVar33 = *(code **)(iVar15 + -0x799c);
        if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar23 >> 5) * 4) >> (*pbVar23 & 0x1f)
            & 1) == 0) {
          while( true ) {
            iVar9 = (*pcVar33)(unaff_s6);
            iVar15 = *(int *)(puVar34 + -0x118);
            if (iVar9 == 0) goto LAB_0002e0bc;
            puVar34[-0x84] = 1;
LAB_0002dc78:
            uVar41 = (**(code **)(iVar15 + -0x7a18))();
            pbVar24 = (byte *)strnlen1(pbVar23,uVar41);
            pbVar6 = pbVar23;
            iVar9 = rpl_mbrtowc(unaff_s3,pbVar23,pbVar24,unaff_s6);
            iVar15 = *(int *)(puVar34 + -0x118);
            *(int *)(puVar34 + -0x70) = iVar9;
            if (iVar9 == -1) goto LAB_0002df14;
            if (iVar9 == -2) {
              uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar34 + -0x74));
              iVar15 = *(int *)(puVar34 + -0x118);
              *(undefined4 *)(puVar34 + -0x70) = uVar41;
              puVar34[-0x6c] = 0;
              puVar34[-0x78] = 1;
              goto LAB_0002d9f0;
            }
            pbVar23 = *(byte **)(puVar34 + -0x74);
            if (iVar9 != 0) break;
            *(undefined4 *)(puVar34 + -0x70) = 1;
            iVar9 = *(int *)(puVar34 + -0x68);
            if (*pbVar23 != 0) goto LAB_0002e098;
            if (iVar9 == 0) goto LAB_0002dcdc;
            pcVar33 = (code *)(*(int *)(iVar15 + -32000) + -0x2990);
LAB_0002dc58:
            FUN_0002d670();
          }
          iVar9 = *(int *)(puVar34 + -0x68);
LAB_0002dcdc:
          pcVar33 = *(code **)(iVar15 + -0x799c);
          pbVar23 = (byte *)0x1;
          *(int *)(puVar34 + -0x108) = iVar9;
          puVar34[-0x6c] = 1;
          iVar11 = (*pcVar33)(unaff_s6);
          iVar15 = *(int *)(puVar34 + -0x118);
          iVar9 = *(int *)(puVar34 + -0x108);
          if (iVar11 != 0) {
            puVar34[-0x84] = 0;
          }
          puVar34[-0x78] = 1;
        }
        else {
          *(undefined4 *)(puVar34 + -0x70) = 1;
          iVar9 = (int)(char)*pbVar23;
          puVar34[-0x6c] = 1;
          puVar34[-0x78] = 1;
          *(int *)(puVar34 + -0x68) = iVar9;
        }
LAB_0002dae8:
        iVar11 = unaff_s2 * 4;
        if (iVar9 == 0) goto LAB_0002db40;
        pbVar43 = param_1 + unaff_s2 * 0x28;
        if (pbVar43[8] == 0) goto LAB_0002da00;
        if (*(int *)(pbVar43 + 0xc) == iVar9) goto code_r0x0002db14;
        goto LAB_0002da10;
      }
    }
    pbVar23 = *(byte **)(iVar9 + iVar11);
    *(int *)(puVar34 + -0x108) = unaff_s2 - (int)pbVar23;
    if (pbVar23 != (byte *)0x0) {
      if (puVar34[-0xb0] != '\0') {
        pbVar28 = *(byte **)(puVar34 + -0xa0);
        if (puVar34[-0xa4] != '\0') goto LAB_0002ddcc;
        goto LAB_0002dd64;
      }
      pbVar28 = *(byte **)(puVar34 + -0xac);
LAB_0002dd80:
      pbVar6 = pbVar28;
      if (puVar34[-0xbc] != '\0') goto LAB_0002ddf4;
      pbVar6 = (byte *)(uint)*pbVar28;
      pcVar33 = *(code **)(iVar15 + -0x799c);
      if ((*(uint *)(*(int *)(puVar34 + -0x100) + (uint)(*pbVar28 >> 5) * 4) >>
           ((uint)pbVar6 & 0x1f) & 1) == 0) goto LAB_0002dddc;
      *(undefined4 *)(puVar34 + -0xa8) = 1;
      pbVar28 = (byte *)(int)(char)*pbVar28;
      puVar34[-0xa4] = 1;
      puVar34[-0xb0] = 1;
      *(byte **)(puVar34 + -0xa0) = pbVar28;
LAB_0002ddcc:
      pcVar33 = *(code **)(iVar15 + -0x7b80);
      if (pbVar28 != (byte *)0x0) goto LAB_0002dd64;
LAB_0002ddd4:
      (*pcVar33)();
LAB_0002dddc:
      iVar9 = (*pcVar33)(unaff_s4);
      iVar15 = *(int *)(puVar34 + -0x118);
      if (iVar9 == 0) goto LAB_0002e0bc;
      puVar34[-0xbc] = 1;
      pbVar6 = pbVar28;
LAB_0002ddf4:
      uVar41 = (**(code **)(iVar15 + -0x7a18))();
      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
      iVar9 = rpl_mbrtowc(unaff_s5,pbVar6,pbVar24,unaff_s4);
      iVar15 = *(int *)(puVar34 + -0x118);
      *(int *)(puVar34 + -0xa8) = iVar9;
      if (iVar9 == -1) {
        puVar34[-0xa4] = 0;
        *(undefined4 *)(puVar34 + -0xa8) = 1;
        puVar34[-0xb0] = 0;
        pbVar28 = (byte *)(*(int *)(puVar34 + -0xac) + *(int *)(puVar34 + -0xa8));
        *(byte **)(puVar34 + -0xac) = pbVar28;
        goto joined_r0x0002dea0;
      }
      pcVar30 = *(char **)(puVar34 + -0xac);
      if (iVar9 == -2) {
        uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);
        iVar15 = *(int *)(puVar34 + -0x118);
        *(undefined4 *)(puVar34 + -0xa8) = uVar41;
        puVar34[-0xa4] = 0;
        goto LAB_0002dd68;
      }
      if (iVar9 == 0) {
        *(undefined4 *)(puVar34 + -0xa8) = 1;
        pbVar28 = *(byte **)(puVar34 + -0xa0);
        if (*pcVar30 != '\0') goto LAB_0002e098;
        pcVar33 = *(code **)(iVar15 + -0x799c);
        if (pbVar28 != (byte *)0x0) goto code_r0x0002def0;
      }
      else {
        pbVar28 = *(byte **)(puVar34 + -0xa0);
        pcVar33 = *(code **)(iVar15 + -0x799c);
      }
      unaff_s2 = 1;
      puVar34[-0xa4] = 1;
      iVar9 = (*pcVar33)(unaff_s4);
      iVar15 = *(int *)(puVar34 + -0x118);
      if (iVar9 != 0) {
        puVar34[-0xbc] = 0;
      }
      puVar34[-0xb0] = 1;
      goto LAB_0002ddcc;
    }
    cVar14 = puVar34[-0x78];
    goto joined_r0x0002d9dc;
  }
  iVar9 = 0;
  pbVar23 = (byte *)0x2;
  pbVar24 = param_1;
LAB_0002d8f0:
  pbVar28 = (byte *)(uint)pbVar24[0x30];
  do {
    pbVar10 = param_1 + iVar9 * 0x28;
    if ((pbVar28 == (byte *)0x0) || (pbVar10[8] == 0)) {
      pbVar43 = *(byte **)(pbVar24 + 0x2c);
      if (pbVar43 == *(byte **)(pbVar10 + 4)) {
        pbVar6 = *(byte **)pbVar10;
        iVar11 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(pbVar24 + 0x28));
        iVar15 = *(int *)(puVar34 + -0x118);
        if (iVar11 == 0) {
          iVar11 = *(int *)(puVar34 + -0xfc);
          goto LAB_0002d964;
        }
      }
    }
    else {
      iVar11 = *(int *)(puVar34 + -0xfc);
      if (*(int *)(pbVar24 + 0x34) == *(int *)(pbVar10 + 0xc)) {
LAB_0002d964:
        iVar9 = iVar9 + 1;
        *(int *)(iVar11 + (int)pbVar23 * 4) = (int)pbVar23 - iVar9;
        goto LAB_0002d978;
      }
    }
    if (iVar9 == 0) break;
    iVar9 = iVar9 - *(int *)(*(int *)(puVar34 + -0xfc) + iVar9 * 4);
  } while( true );
  *(byte **)(*(int *)(puVar34 + -0xfc) + (int)pbVar23 * 4) = pbVar23;
LAB_0002d978:
  pbVar23 = pbVar23 + 1;
  pbVar24 = pbVar24 + 0x28;
  if (*(byte **)(puVar34 + -0x104) == pbVar23) goto LAB_0002d988;
  goto LAB_0002d8f0;
code_r0x0002db14:
  pbVar28 = *(byte **)(puVar34 + -0x70);
  pbVar23 = *(byte **)(puVar34 + -0x74);
LAB_0002db1c:
  pbVar23 = pbVar23 + (int)pbVar28;
  unaff_s2 = unaff_s2 + 1;
  puVar34[-0x78] = 0;
  *(byte **)(puVar34 + -0x74) = pbVar23;
  if (*(int *)(puVar34 + -0x104) == unaff_s2) {
    **(undefined4 **)(puVar34 + -0x110) = *(undefined4 *)(puVar34 + -0xac);
LAB_0002db40:
    (**(code **)(iVar15 + -0x7ca0))(param_1);
    pbVar43 = (byte *)0x1;
    iVar15 = *(int *)(puVar34 + -0x118);
    goto LAB_0002db5c;
  }
  goto LAB_0002daa0;
LAB_0002dd64:
  pcVar30 = *(char **)(puVar34 + -0xac);
LAB_0002dd68:
  puVar34[-0xb0] = 0;
  pbVar28 = (byte *)(pcVar30 + *(int *)(puVar34 + -0xa8));
  *(byte **)(puVar34 + -0xac) = pbVar28;
joined_r0x0002dea0:
  pbVar23 = pbVar23 + -1;
  if (pbVar23 == (byte *)0x0) {
    cVar14 = puVar34[-0x78];
    unaff_s2 = *(int *)(puVar34 + -0x108);
    goto joined_r0x0002d9dc;
  }
  goto LAB_0002dd80;
code_r0x0002def0:
  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);
  (**(code **)(iVar15 + -0x7bb0))
            (*(int *)(iVar15 + -0x7fc8) + -0x114,pbVar6,0xb3,*(int *)(iVar15 + -0x7fc8) + -0xd0);
LAB_0002df14:
  puVar34[-0x6c] = 0;
  *(undefined4 *)(puVar34 + -0x70) = 1;
  puVar34[-0x78] = 1;
  goto LAB_0002d9f0;
LAB_0002e6c8:
  iVar9 = *(int *)(puVar35 + -0xc4);
LAB_0002e6cc:
  unaff_s5 = *(byte **)(puVar35 + -0xc0);
LAB_0002e6d0:
  pbVar29 = unaff_s5 + iVar9;
  puVar35[-200] = 0;
  *(byte **)(puVar35 + -0xc4) = pbVar29;
  *(int *)(puVar35 + -0x160) = *(int *)(puVar35 + -0x160) + 1;
  if (puVar35[-0xd4] == '\0') goto LAB_0002e3c4;
  goto LAB_0002e6f4;
LAB_0002ef34:
  pbVar31 = *(byte **)(puVar35 + -0x148);
  goto LAB_0002e2ac;
LAB_0002f210:
  pbVar6 = (byte *)0xffffffff;
  goto LAB_0002f060;
LAB_0002e098:
  (**(code **)(iVar15 + -0x7bb0))
            (*(int *)(iVar15 + -0x7fc8) + -0xe8,*(int *)(iVar15 + -0x7fc8) + -0x120,0xb2,
             *(int *)(iVar15 + -0x7fc8) + -0xd0);
LAB_0002e0bc:
  pbVar24 = &DAT_00000096;
  pcVar33 = *(code **)(iVar15 + -0x7bb0);
  pbVar6 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);
  pbVar10 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x100);
  (*pcVar33)();
LAB_0002e0e0:
  pcVar42 = mbsstr;
  (*pcVar33)();
  puVar8 = *(undefined4 **)(pcVar33 + 0x47b00);
  pcVar40 = *(code **)(pcVar33 + 0x47a80);
  *(undefined4 **)(puVar35 + -0x154) = puVar8;
  *(code **)(puVar35 + -0x170) = pcVar33 + 0x4f498;
  *(undefined1 **)(puVar35 + -0x1c) = unaff_s3;
  *(int *)(puVar35 + -0x20) = unaff_s2;
  *(code **)(puVar35 + -4) = pcVar42;
  *(undefined1 **)(puVar35 + -8) = puVar34 + -0x128;
  *(byte **)(puVar35 + -0xc) = pbVar23;
  *(byte **)(puVar35 + -0x10) = unaff_s6;
  *(byte **)(puVar35 + -0x14) = unaff_s5;
  *(byte **)(puVar35 + -0x18) = unaff_s4;
  *(byte **)(puVar35 + -0x24) = pbVar28;
  *(byte **)(puVar35 + -0x28) = param_1;
  *(undefined4 *)(puVar35 + -0x2c) = *puVar8;
  pbVar43 = pbVar6;
  uVar5 = (*pcVar40)();
  iVar15 = *(int *)(puVar35 + -0x170);
  pbVar31 = pbVar10;
  if (uVar5 < 2) {
    unaff_s6 = (byte *)(int)(char)*pbVar6;
    pbVar29 = pbVar28;
    puVar37 = puVar34 + -0x128;
    if (unaff_s6 != (byte *)0x0) {
      pbVar29 = pbVar6 + 1;
      puVar37 = puVar34 + -0x128;
      if (*pbVar10 != 0) {
        pbVar23 = (byte *)0x0;
        unaff_s5 = (byte *)0x0;
        iVar9 = 1;
        puVar37 = puVar35 + -0x148;
        param_1 = (byte *)(*(int *)(iVar15 + -32000) + -0x2b80);
        pbVar28 = pbVar6;
        pbVar26 = pbVar10;
        pbVar4 = (byte *)0x0;
LAB_0002e18c:
        do {
          unaff_s4 = pbVar4;
          pbVar31 = pbVar26;
          pbVar10 = pbVar31;
          if (((iVar9 != 0) && (&DAT_00000009 < unaff_s5)) &&
             ((byte *)((int)unaff_s5 * 5) <= unaff_s4)) {
            *(int *)(puVar35 + -0x168) = iVar9;
            if (pbVar28 != (byte *)0x0) {
              pcVar33 = *(code **)(iVar15 + -0x7af4);
              pbVar43 = unaff_s4 + -(int)pbVar23;
              *(byte **)(puVar35 + -0x164) = pbVar28;
              iVar9 = (*pcVar33)(pbVar28);
              iVar15 = *(int *)(puVar35 + -0x170);
              pbVar28 = (byte *)(*(int *)(puVar35 + -0x164) + iVar9);
              iVar9 = *(int *)(puVar35 + -0x168);
              pbVar23 = unaff_s4;
              if (*pbVar28 != 0) goto LAB_0002e218;
            }
            pbVar24 = (byte *)(**(code **)(iVar15 + -0x7a8c))(pbVar6);
            pbVar43 = pbVar6;
            iVar9 = MASKED(pbVar31,pbVar6,pbVar24,puVar37);
            iVar15 = *(int *)(puVar35 + -0x170);
            if (iVar9 != 0) goto LAB_0002ef34;
            pbVar28 = (byte *)0x0;
            iVar9 = 0;
          }
LAB_0002e218:
          unaff_s5 = unaff_s5 + 1;
          pbVar26 = pbVar31 + 1;
          if ((byte *)(int)(char)*pbVar31 == unaff_s6) {
            if (pbVar6[1] == 0) goto LAB_0002e2ac;
            if (*pbVar26 == 0) break;
            pbVar4 = unaff_s4 + 2;
            if (pbVar6[1] == *pbVar26) {
              pbVar17 = pbVar6 + 2;
              pbVar21 = pbVar26;
              do {
                pbVar43 = (byte *)(int)(char)*pbVar17;
                pbVar21 = pbVar21 + 1;
                if (pbVar43 == (byte *)0x0) goto LAB_0002e2ac;
                pbVar24 = (byte *)(int)(char)*pbVar21;
                pbVar17 = pbVar17 + 1;
                if (pbVar24 == (byte *)0x0) goto LAB_0002e2ec;
                pbVar4 = unaff_s4 + ((int)pbVar17 - (int)pbVar6);
              } while (pbVar43 == pbVar24);
            }
            goto LAB_0002e18c;
          }
          pbVar4 = unaff_s4 + 1;
        } while (pbVar31[1] != 0);
      }
LAB_0002e2ec:
      pbVar31 = (byte *)0x0;
    }
LAB_0002e2ac:
    pbVar28 = *(byte **)(puVar35 + -0x2c);
    puVar39 = puVar37;
    if (pbVar28 == (byte *)**(undefined4 **)(puVar35 + -0x154)) {
      return pbVar31;
    }
  }
  else {
    bVar20 = *pbVar6;
    pbVar29 = (byte *)(int)(char)bVar20;
    param_1 = puVar35 + -0x140;
    iVar9 = *(int *)(iVar15 + -0x7c98);
    *(undefined4 *)(puVar35 + -0x140) = 0;
    pbVar43 = (byte *)(uint)bVar20;
    *(undefined4 *)(puVar35 + -0x13c) = 0;
    *(int *)(puVar35 + -0x168) = iVar9;
    *(byte **)(puVar35 + -0x134) = pbVar6;
    puVar35[-0x144] = 0;
    uVar5 = *(uint *)(iVar9 + (uint)(bVar20 >> 5) * 4);
    puVar35[-0x138] = 0;
    if ((uVar5 >> ((uint)pbVar43 & 0x1f) & 1) != 0) {
      *(byte **)(puVar35 + -0x128) = pbVar29;
      *(undefined4 *)(puVar35 + -0x130) = 1;
      puVar35[-300] = 1;
      puVar35[-0x138] = 1;
LAB_0002e2a0:
      if (pbVar29 != (byte *)0x0) {
LAB_0002e360:
        puVar35[-0xd4] = 0;
        unaff_s4 = puVar35 + -0x108;
        *(undefined4 *)(puVar35 + -0x108) = 0;
        *(undefined4 *)(puVar35 + -0x15c) = 1;
        puVar37 = puVar35 + -0xd0;
        *(undefined4 *)(puVar35 + -0xd0) = 0;
        *(undefined1 **)(puVar35 + -0x158) = puVar35 + -0xa4;
        param_1 = (byte *)0x0;
        iVar9 = *(int *)(iVar15 + -32000);
        pbVar23 = puVar35 + -0x80;
        *(undefined4 *)(puVar35 + -0x104) = 0;
        *(undefined4 *)(puVar35 + -0xcc) = 0;
        *(byte **)(puVar35 + -0xfc) = pbVar6;
        *(undefined4 *)(puVar35 + -0x160) = 0;
        *(int *)(puVar35 + -0x14c) = iVar9 + -0x2954;
        puVar35[-0x10c] = 0;
        *(undefined4 *)(puVar35 + -0x150) = 0;
        puVar35[-0x100] = 0;
        *(byte **)(puVar35 + -0xc4) = pbVar10;
        puVar35[-200] = 0;
        pbVar29 = pbVar10;
        if (puVar35[-0xd4] != '\0') goto LAB_0002e6f4;
LAB_0002e3c4:
        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >> (*pbVar29 & 0x1f)
            & 1) != 0) {
          *(undefined4 *)(puVar35 + -0xc0) = 1;
          pbVar29 = (byte *)(int)(char)*pbVar29;
          puVar35[-0xbc] = 1;
          puVar35[-200] = 1;
          *(byte **)(puVar35 + -0xb8) = pbVar29;
          goto LAB_0002e404;
        }
        iVar9 = (**(code **)(iVar15 + -0x799c))(puVar37);
        iVar15 = *(int *)(puVar35 + -0x170);
        puVar38 = puVar37;
        if (iVar9 != 0) {
          puVar35[-0xd4] = 1;
LAB_0002e6f4:
          uVar41 = (**(code **)(iVar15 + -0x7a18))();
          pbVar24 = (byte *)strnlen1(pbVar29,uVar41);
          pbVar43 = pbVar29;
          iVar9 = rpl_mbrtowc(puVar35 + -0xb8,pbVar29,pbVar24,puVar37);
          iVar15 = *(int *)(puVar35 + -0x170);
          *(int *)(puVar35 + -0xc0) = iVar9;
          if (iVar9 == -1) {
            puVar35[-0xbc] = 0;
            *(undefined4 *)(puVar35 + -0xc0) = 1;
            puVar35[-200] = 1;
          }
          else {
            if (iVar9 != -2) {
              if (iVar9 == 0) {
                *(undefined4 *)(puVar35 + -0xc0) = 1;
                pbVar29 = *(byte **)(puVar35 + -0xb8);
                puVar39 = puVar37;
                if (**(char **)(puVar35 + -0xc4) != '\0') goto LAB_0002ef60;
                if (pbVar29 != (byte *)0x0) {
LAB_0002ed10:
                  FUN_0002d670();
LAB_0002ed18:
                  pcVar30 = *(char **)(puVar35 + -0x54);
                  puVar35[-0x4c] = 0;
                  *(undefined4 *)(puVar35 + -0x50) = 1;
                  puVar37 = puVar39;
LAB_0002e51c:
                  unaff_s5 = puVar35 + -0x48;
                  puVar35[-0x58] = 0;
                  unaff_s6 = puVar35 + -0x98;
                  pbVar43 = (byte *)(pcVar30 + *(int *)(puVar35 + -0x50));
                  *(byte **)(puVar35 + -0x54) = pbVar43;
                  do {
                    param_1 = param_1 + 1;
                    puVar39 = puVar37;
                    puVar38 = puVar37;
                    if (puVar35[-100] == '\0') {
                      bVar20 = *pbVar43;
                      if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4) >>
                           (bVar20 & 0x1f) & 1) == 0) {
                        iVar9 = (**(code **)(iVar15 + -0x799c))(*(undefined4 *)(puVar35 + -0x164));
                        iVar15 = *(int *)(puVar35 + -0x170);
                        pbVar29 = pbVar43;
                        if (iVar9 != 0) {
                          puVar35[-100] = 1;
                          goto LAB_0002e630;
                        }
                        goto LAB_0002ef3c;
                      }
                      *(undefined4 *)(puVar35 + -0x50) = 1;
                      pbVar29 = (byte *)(int)(char)*pbVar43;
                      puVar35[-0x4c] = 1;
                      puVar35[-0x58] = 1;
                      *(byte **)(puVar35 + -0x48) = pbVar29;
                      pbVar43 = (byte *)(uint)bVar20;
joined_r0x0002e574:
                      if (pbVar29 == (byte *)0x0) {
                        pbVar31 = *(byte **)(puVar35 + -0xc4);
                        pbVar29 = (byte *)0x0;
                        goto LAB_0002e2ac;
                      }
                    }
                    else {
LAB_0002e630:
                      uVar41 = (**(code **)(iVar15 + -0x7a18))();
                      pbVar24 = (byte *)strnlen1(pbVar43,uVar41);
                      iVar9 = rpl_mbrtowc(unaff_s5,pbVar43,pbVar24,*(undefined4 *)(puVar35 + -0x164)
                                         );
                      iVar15 = *(int *)(puVar35 + -0x170);
                      *(int *)(puVar35 + -0x50) = iVar9;
                      if (iVar9 == -1) {
                        puVar35[-0x4c] = 0;
                        *(undefined4 *)(puVar35 + -0x50) = 1;
                        puVar35[-0x58] = 1;
                      }
                      else {
                        if (iVar9 != -2) {
                          if (iVar9 == 0) {
                            *(undefined4 *)(puVar35 + -0x50) = 1;
                            pbVar29 = *(byte **)(puVar35 + -0x48);
                            if (**(char **)(puVar35 + -0x54) != '\0') goto LAB_0002ef60;
                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
                          }
                          else {
                            pbVar29 = *(byte **)(puVar35 + -0x48);
                          }
                          pcVar33 = *(code **)(iVar15 + -0x799c);
                          puVar35[-0x4c] = 1;
                          iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));
                          pbVar43 = (byte *)0x1;
                          iVar15 = *(int *)(puVar35 + -0x170);
                          if (iVar9 != 0) {
                            puVar35[-100] = 0;
                          }
                          puVar35[-0x58] = 1;
                          goto joined_r0x0002e574;
                        }
                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x54));
                        iVar15 = *(int *)(puVar35 + -0x170);
                        *(undefined4 *)(puVar35 + -0x50) = uVar41;
                        puVar35[-0x4c] = 0;
                        puVar35[-0x58] = 1;
                      }
                    }
                    if (puVar35[-0x90] == '\0') {
                      pbVar29 = *(byte **)(puVar35 + -0x8c);
                      if (puVar35[-0x9c] == '\0') {
                        pbVar43 = (byte *)(uint)*pbVar29;
                        if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>
                             ((uint)pbVar43 & 0x1f) & 1) != 0) {
                          *(undefined4 *)(puVar35 + -0x88) = 1;
                          pbVar29 = (byte *)(int)(char)*pbVar29;
                          puVar35[-0x84] = 1;
                          puVar35[-0x90] = 1;
                          *(byte **)(puVar35 + -0x80) = pbVar29;
                          goto LAB_0002e5d0;
                        }
                        iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s6);
                        iVar15 = *(int *)(puVar35 + -0x170);
                        if (iVar9 == 0) goto LAB_0002ef3c;
                        puVar35[-0x9c] = 1;
                      }
                      uVar41 = (**(code **)(iVar15 + -0x7a18))();
                      pbVar24 = (byte *)strnlen1(pbVar29,uVar41);
                      iVar9 = rpl_mbrtowc(pbVar23,pbVar29,pbVar24,unaff_s6);
                      iVar15 = *(int *)(puVar35 + -0x170);
                      *(int *)(puVar35 + -0x88) = iVar9;
                      if (iVar9 == -1) {
                        puVar35[-0x84] = 0;
                        *(undefined4 *)(puVar35 + -0x88) = 1;
                        puVar35[-0x90] = 1;
                      }
                      else {
                        if (iVar9 != -2) {
                          if (iVar9 == 0) {
                            *(undefined4 *)(puVar35 + -0x88) = 1;
                            pbVar29 = *(byte **)(puVar35 + -0x80);
                            if (**(char **)(puVar35 + -0x8c) != '\0') goto LAB_0002ef60;
                            if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
                          }
                          else {
                            pbVar29 = *(byte **)(puVar35 + -0x80);
                          }
                          pcVar33 = *(code **)(iVar15 + -0x799c);
                          puVar35[-0x84] = 1;
                          iVar9 = (*pcVar33)(unaff_s6);
                          pbVar43 = (byte *)0x1;
                          iVar15 = *(int *)(puVar35 + -0x170);
                          if (iVar9 != 0) {
                            puVar35[-0x9c] = 0;
                          }
                          puVar35[-0x90] = 1;
                          goto LAB_0002e5d0;
                        }
                        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x8c));
                        iVar15 = *(int *)(puVar35 + -0x170);
                        *(undefined4 *)(puVar35 + -0x88) = uVar41;
                        puVar35[-0x84] = 0;
                        puVar35[-0x90] = 1;
                      }
                      pbVar24 = *(byte **)(puVar35 + -0x88);
                      pbVar43 = pbVar29;
LAB_0002e794:
                      iVar9 = *(int *)(puVar35 + -0xc4);
                      if (pbVar24 != *(byte **)(puVar35 + -0x50)) goto LAB_0002e6cc;
                      pbVar43 = *(byte **)(puVar35 + -0x54);
                      iVar9 = (**(code **)(iVar15 + -0x79c0))(*(undefined4 *)(puVar35 + -0x8c));
                      iVar15 = *(int *)(puVar35 + -0x170);
                      bVar2 = iVar9 != 0;
                    }
                    else {
                      pbVar24 = *(byte **)(puVar35 + -0x88);
                      if (puVar35[-0x84] == '\0') goto LAB_0002e794;
                      pbVar29 = *(byte **)(puVar35 + -0x80);
LAB_0002e5d0:
                      pbVar31 = (byte *)0x0;
                      if (pbVar29 == (byte *)0x0) goto LAB_0002e2ac;
                      pbVar24 = *(byte **)(puVar35 + -0x88);
                      if (puVar35[-0x4c] == '\0') goto LAB_0002e794;
                      bVar2 = *(byte **)(puVar35 + -0x48) != pbVar29;
                    }
                    if (bVar2) goto LAB_0002e6c8;
                    puVar35[-0x90] = 0;
                    puVar35[-0x58] = 0;
                    *(int *)(puVar35 + -0x8c) =
                         *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);
                    pbVar43 = (byte *)(*(int *)(puVar35 + -0x54) + *(int *)(puVar35 + -0x50));
                    *(byte **)(puVar35 + -0x54) = pbVar43;
                  } while( true );
                }
              }
              else {
                pbVar29 = *(byte **)(puVar35 + -0xb8);
              }
              pcVar33 = *(code **)(iVar15 + -0x799c);
              unaff_s5 = (byte *)0x1;
              puVar35[-0xbc] = 1;
              iVar9 = (*pcVar33)(puVar37);
              iVar15 = *(int *)(puVar35 + -0x170);
              if (iVar9 != 0) {
                puVar35[-0xd4] = 0;
              }
              puVar35[-200] = 1;
LAB_0002e404:
              pbVar31 = (byte *)0x0;
              if (pbVar29 != (byte *)0x0) {
                if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {
                  param_1 = param_1 + 1;
                  goto LAB_0002e448;
                }
                uVar5 = *(uint *)(puVar35 + -0x15c);
                if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) goto LAB_0002e9c8;
                goto LAB_0002e438;
              }
              goto LAB_0002e2ac;
            }
            uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xc4));
            iVar15 = *(int *)(puVar35 + -0x170);
            *(undefined4 *)(puVar35 + -0xc0) = uVar41;
            puVar35[-0xbc] = 0;
            puVar35[-200] = 1;
          }
          if ((*(int *)(puVar35 + -0x15c) == 0) || (*(uint *)(puVar35 + -0x160) < 10)) {
            param_1 = param_1 + 1;
            goto LAB_0002e898;
          }
          uVar5 = 0;
          if ((byte *)(*(int *)(puVar35 + -0x160) * 5) <= param_1) {
LAB_0002e9c8:
            unaff_s5 = param_1 + -*(int *)(puVar35 + -0x150);
            if (unaff_s5 == (byte *)0x0) {
              if (puVar35[-0x100] == '\0') goto LAB_0002ed2c;
              if (puVar35[-0xf4] == '\0') goto LAB_0002ed84;
              pbVar29 = *(byte **)(puVar35 + -0xf0);
              goto LAB_0002ed78;
            }
            if (puVar35[-0x100] != '\0') {
              pbVar29 = *(byte **)(puVar35 + -0xf0);
              if (puVar35[-0xf4] != '\0') goto LAB_0002ea50;
              goto LAB_0002e9e8;
            }
            pbVar29 = *(byte **)(puVar35 + -0xfc);
            goto LAB_0002ea08;
          }
LAB_0002e438:
          *(undefined4 *)(puVar35 + -0x15c) = 1;
          do {
            param_1 = param_1 + 1;
            if (uVar5 == 0) {
LAB_0002e898:
              unaff_s5 = *(byte **)(puVar35 + -0xc0);
LAB_0002e89c:
              iVar9 = *(int *)(puVar35 + -0xc4);
              if (unaff_s5 != *(byte **)(puVar35 + -0x130)) goto LAB_0002e6d0;
              pbVar43 = *(byte **)(puVar35 + -0x134);
              pbVar24 = unaff_s5;
              iVar11 = (**(code **)(iVar15 + -0x79c0))(iVar9);
              iVar15 = *(int *)(puVar35 + -0x170);
              puVar39 = puVar37;
              if (iVar11 != 0) goto LAB_0002e6d0;
            }
            else {
LAB_0002e448:
              unaff_s5 = *(byte **)(puVar35 + -0xc0);
              if (puVar35[-300] == '\0') goto LAB_0002e89c;
              puVar39 = puVar37;
              if (*(int *)(puVar35 + -0xb8) != *(int *)(puVar35 + -0x128)) goto LAB_0002e6c8;
            }
            puVar8 = (undefined4 *)(puVar35 + -0xd4);
            puVar3 = (undefined4 *)(puVar35 + -0x9c);
            do {
              puVar18 = puVar3;
              puVar12 = puVar8 + 4;
              uVar41 = puVar8[3];
              uVar25 = puVar8[1];
              uVar16 = puVar8[2];
              *puVar18 = *puVar8;
              puVar18[1] = uVar25;
              puVar18[2] = uVar16;
              puVar18[3] = uVar41;
              puVar22 = *(undefined4 **)(puVar35 + -0x158);
              puVar8 = puVar12;
              puVar3 = puVar18 + 4;
            } while (puVar12 != puVar22);
            bVar20 = *pbVar6;
            pbVar29 = (byte *)(int)(char)bVar20;
            *(undefined1 **)(puVar35 + -0x164) = puVar35 + -0x60;
            pbVar24 = (byte *)*puVar22;
            puVar18[5] = puVar22[1];
            puVar18[4] = pbVar24;
            puVar35[-0x90] = 0;
            *(byte **)(puVar35 + -0x54) = pbVar6;
            puVar35[-100] = 0;
            uVar5 = *(uint *)(*(int *)(puVar35 + -0x168) + (uint)(bVar20 >> 5) * 4);
            *(undefined4 *)(puVar35 + -0x60) = 0;
            *(int *)(puVar35 + -0x8c) = *(int *)(puVar35 + -0x8c) + *(int *)(puVar35 + -0x88);
            *(undefined4 *)(puVar35 + -0x5c) = 0;
            puVar35[-0x58] = 0;
            puVar37 = puVar39;
            if ((uVar5 >> (bVar20 & 0x1f) & 1) == 0) {
              pbVar29 = *(byte **)(puVar35 + -0x164);
              iVar9 = (**(code **)(iVar15 + -0x799c))(pbVar29);
              iVar15 = *(int *)(puVar35 + -0x170);
              puVar38 = puVar39;
              if (iVar9 == 0) break;
              pcVar33 = *(code **)(iVar15 + -0x7a18);
              puVar35[-100] = 1;
              uVar41 = (*pcVar33)();
              pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
              iVar9 = rpl_mbrtowc(puVar35 + -0x48,pbVar6,pbVar24,pbVar29);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(int *)(puVar35 + -0x50) = iVar9;
              if (iVar9 == -1) goto LAB_0002ed18;
              pcVar30 = *(char **)(puVar35 + -0x54);
              if (iVar9 == -2) {
                uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);
                iVar15 = *(int *)(puVar35 + -0x170);
                *(undefined4 *)(puVar35 + -0x50) = uVar41;
                puVar35[-0x4c] = 0;
                goto LAB_0002e51c;
              }
              if (iVar9 == 0) {
                *(undefined4 *)(puVar35 + -0x50) = 1;
                pbVar29 = *(byte **)(puVar35 + -0x48);
                if (*pcVar30 != '\0') goto LAB_0002ef60;
                if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
              }
              else {
                pbVar29 = *(byte **)(puVar35 + -0x48);
              }
              pcVar33 = *(code **)(iVar15 + -0x799c);
              unaff_s6 = (byte *)0x1;
              puVar35[-0x4c] = 1;
              iVar9 = (*pcVar33)(*(undefined4 *)(puVar35 + -0x164));
              iVar15 = *(int *)(puVar35 + -0x170);
              if (iVar9 != 0) {
                puVar35[-100] = 0;
              }
              puVar35[-0x58] = 1;
            }
            else {
              *(byte **)(puVar35 + -0x48) = pbVar29;
              *(undefined4 *)(puVar35 + -0x50) = 1;
              puVar35[-0x4c] = 1;
              puVar35[-0x58] = 1;
            }
            if (pbVar29 != (byte *)0x0) {
              pcVar30 = *(char **)(puVar35 + -0x54);
              goto LAB_0002e51c;
            }
            pcVar33 = *(code **)(iVar15 + -0x7b80);
            (*pcVar33)();
            pbVar29 = (byte *)0x0;
LAB_0002eb80:
            iVar9 = (*pcVar33)(unaff_s4);
            iVar15 = *(int *)(puVar35 + -0x170);
            puVar38 = puVar39;
            if (iVar9 == 0) break;
            puVar35[-0x10c] = 1;
            puVar37 = puVar39;
LAB_0002eb98:
            pbVar43 = pbVar29;
            uVar41 = (**(code **)(iVar15 + -0x7a18))();
            pbVar24 = (byte *)strnlen1(pbVar43,uVar41);
            iVar9 = rpl_mbrtowc(puVar35 + -0xf0,pbVar43,pbVar24,unaff_s4);
            iVar15 = *(int *)(puVar35 + -0x170);
            *(int *)(puVar35 + -0xf8) = iVar9;
            if (iVar9 == -1) {
              pcVar30 = *(char **)(puVar35 + -0xfc);
              puVar35[-0xf4] = 0;
              *(undefined4 *)(puVar35 + -0xf8) = 1;
            }
            else {
              pcVar30 = *(char **)(puVar35 + -0xfc);
              if (iVar9 != -2) {
                if (iVar9 == 0) {
                  *(undefined4 *)(puVar35 + -0xf8) = 1;
                  pbVar29 = *(byte **)(puVar35 + -0xf0);
                  puVar39 = puVar37;
                  if (*pcVar30 != '\0') goto LAB_0002ef60;
                  if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
                }
                else {
                  pbVar29 = *(byte **)(puVar35 + -0xf0);
                }
                pcVar33 = *(code **)(iVar15 + -0x799c);
                unaff_s6 = (byte *)0x1;
                puVar35[-0xf4] = 1;
                iVar9 = (*pcVar33)(unaff_s4);
                iVar15 = *(int *)(puVar35 + -0x170);
                if (iVar9 != 0) {
                  puVar35[-0x10c] = 0;
                }
                puVar35[-0x100] = 1;
                goto LAB_0002ea50;
              }
              uVar41 = (**(code **)(iVar15 + -0x7a8c))(pcVar30);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(undefined4 *)(puVar35 + -0xf8) = uVar41;
              puVar35[-0xf4] = 0;
            }
            while( true ) {
              unaff_s5 = unaff_s5 + -1;
              puVar35[-0x100] = 0;
              pbVar29 = (byte *)(pcVar30 + *(int *)(puVar35 + -0xf8));
              *(byte **)(puVar35 + -0xfc) = pbVar29;
              unaff_s6 = pbVar29;
              if (unaff_s5 == (byte *)0x0) goto LAB_0002ed30;
LAB_0002ea08:
              if (puVar35[-0x10c] != '\0') goto LAB_0002eb98;
              pcVar33 = *(code **)(iVar15 + -0x799c);
              puVar39 = puVar37;
              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*pbVar29 >> 5) * 4) >>
                   (*pbVar29 & 0x1f) & 1) == 0) goto LAB_0002eb80;
              *(undefined4 *)(puVar35 + -0xf8) = 1;
              pbVar29 = (byte *)(int)(char)*pbVar29;
              puVar35[-0xf4] = 1;
              puVar35[-0x100] = 1;
              *(byte **)(puVar35 + -0xf0) = pbVar29;
LAB_0002ea50:
              if (pbVar29 == (byte *)0x0) break;
LAB_0002e9e8:
              pcVar30 = *(char **)(puVar35 + -0xfc);
            }
            pcVar33 = *(code **)(puVar35 + -0x14c);
            pbVar29 = (byte *)0x0;
            pbVar28 = (byte *)0x0;
            if (puVar35[-0x100] != '\0') goto LAB_0002ea60;
LAB_0002ed2c:
            unaff_s6 = *(byte **)(puVar35 + -0xfc);
LAB_0002ed30:
            if (puVar35[-0x10c] == '\0') {
              if ((*(uint *)(*(int *)(puVar35 + -0x168) + (uint)(*unaff_s6 >> 5) * 4) >>
                   (*unaff_s6 & 0x1f) & 1) == 0) {
                iVar9 = (**(code **)(iVar15 + -0x799c))(unaff_s4);
                iVar15 = *(int *)(puVar35 + -0x170);
                puVar38 = puVar37;
                if (iVar9 != 0) {
                  puVar35[-0x10c] = 1;
                  goto LAB_0002ee14;
                }
                break;
              }
              *(undefined4 *)(puVar35 + -0xf8) = 1;
              pbVar29 = (byte *)(int)(char)*unaff_s6;
              puVar35[-0xf4] = 1;
              puVar35[-0x100] = 1;
              *(byte **)(puVar35 + -0xf0) = pbVar29;
LAB_0002ed78:
              pcVar33 = *(code **)(puVar35 + -0x14c);
              pbVar28 = pbVar29;
              if (pbVar29 != (byte *)0x0) goto LAB_0002ed84;
LAB_0002ea60:
              pbVar24 = puVar35 + -0x148;
              pbVar43 = pbVar6;
              iVar9 = (*pcVar33)(pbVar10);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(int *)(puVar35 + -0x15c) = iVar9;
              pbVar29 = pbVar28;
              if (iVar9 != 0) goto LAB_0002ef34;
              uVar5 = (uint)(byte)puVar35[-0xbc];
              *(byte **)(puVar35 + -0x150) = param_1;
            }
            else {
LAB_0002ee14:
              uVar41 = (**(code **)(iVar15 + -0x7a18))();
              pbVar24 = (byte *)strnlen1(unaff_s6,uVar41);
              pbVar43 = unaff_s6;
              iVar9 = rpl_mbrtowc(puVar35 + -0xf0,unaff_s6,pbVar24,unaff_s4);
              iVar15 = *(int *)(puVar35 + -0x170);
              *(int *)(puVar35 + -0xf8) = iVar9;
              if (iVar9 != -1) {
                if (iVar9 == -2) {
                  uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0xfc));
                  iVar15 = *(int *)(puVar35 + -0x170);
                  *(undefined4 *)(puVar35 + -0xf8) = uVar41;
                  puVar35[-0xf4] = 0;
                  puVar35[-0x100] = 1;
                  goto LAB_0002ed84;
                }
                if (iVar9 != 0) {
                  pbVar29 = *(byte **)(puVar35 + -0xf0);
LAB_0002ee78:
                  pcVar33 = *(code **)(iVar15 + -0x799c);
                  unaff_s5 = (byte *)0x1;
                  puVar35[-0xf4] = 1;
                  iVar9 = (*pcVar33)(unaff_s4);
                  iVar15 = *(int *)(puVar35 + -0x170);
                  if (iVar9 != 0) {
                    puVar35[-0x10c] = 0;
                  }
                  puVar35[-0x100] = 1;
                  goto LAB_0002ed78;
                }
                *(undefined4 *)(puVar35 + -0xf8) = 1;
                pbVar29 = *(byte **)(puVar35 + -0xf0);
                puVar39 = puVar37;
                if (**(char **)(puVar35 + -0xfc) == '\0') {
                  if (pbVar29 == (byte *)0x0) goto LAB_0002ee78;
                  goto LAB_0002ed10;
                }
                goto LAB_0002ef60;
              }
              puVar35[-0xf4] = 0;
              *(undefined4 *)(puVar35 + -0xf8) = 1;
              puVar35[-0x100] = 1;
LAB_0002ed84:
              uVar5 = (uint)(byte)puVar35[-0xbc];
              *(byte **)(puVar35 + -0x150) = param_1;
              *(undefined4 *)(puVar35 + -0x15c) = 1;
            }
          } while( true );
        }
        goto LAB_0002ef3c;
      }
      pbVar29 = (byte *)0x0;
      goto LAB_0002e2ac;
    }
    iVar9 = (**(code **)(iVar15 + -0x799c))(param_1);
    iVar15 = *(int *)(puVar35 + -0x170);
    pbVar29 = pbVar28;
    if (iVar9 != 0) {
      pcVar33 = *(code **)(iVar15 + -0x7a18);
      puVar35[-0x144] = 1;
      uVar41 = (*pcVar33)();
      pbVar24 = (byte *)strnlen1(pbVar6,uVar41);
      pbVar43 = pbVar6;
      iVar9 = rpl_mbrtowc(puVar35 + -0x128,pbVar6,pbVar24,param_1);
      iVar15 = *(int *)(puVar35 + -0x170);
      *(int *)(puVar35 + -0x130) = iVar9;
      if (iVar9 == -1) {
        puVar35[-300] = 0;
        *(undefined4 *)(puVar35 + -0x130) = 1;
        puVar35[-0x138] = 1;
        goto LAB_0002e360;
      }
      if (iVar9 == -2) {
        uVar41 = (**(code **)(iVar15 + -0x7a8c))(*(undefined4 *)(puVar35 + -0x134));
        iVar15 = *(int *)(puVar35 + -0x170);
        *(undefined4 *)(puVar35 + -0x130) = uVar41;
        puVar35[-300] = 0;
        puVar35[-0x138] = 1;
        goto LAB_0002e360;
      }
      if (iVar9 == 0) {
        *(undefined4 *)(puVar35 + -0x130) = 1;
        pbVar29 = *(byte **)(puVar35 + -0x128);
        if (**(char **)(puVar35 + -0x134) != '\0') goto LAB_0002ef60;
        pcVar33 = *(code **)(iVar15 + -0x799c);
        puVar39 = puVar34 + -0x128;
        if (pbVar29 != (byte *)0x0) goto LAB_0002ed10;
      }
      else {
        pbVar29 = *(byte **)(puVar35 + -0x128);
        pcVar33 = *(code **)(iVar15 + -0x799c);
      }
      unaff_s5 = (byte *)0x1;
      puVar35[-300] = 1;
      iVar9 = (*pcVar33)(param_1);
      iVar15 = *(int *)(puVar35 + -0x170);
      if (iVar9 != 0) {
        puVar35[-0x144] = 0;
      }
      puVar35[-0x138] = 1;
      goto LAB_0002e2a0;
    }
LAB_0002ef3c:
    (**(code **)(iVar15 + -0x7bb0))
              (*(int *)(iVar15 + -0x7fc8) + -0x100,*(int *)(iVar15 + -0x7fc8) + -0x120,0x96,
               *(int *)(iVar15 + -0x7fc8) + -0xd0);
    puVar39 = puVar38;
LAB_0002ef60:
    pbVar24 = &DAT_000000b2;
    pbVar43 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0x120);
    pbVar28 = (byte *)(*(int *)(iVar15 + -0x7fc8) + -0xe8);
    (**(code **)(iVar15 + -0x7bb0))();
  }
  pcVar33 = *(code **)(iVar15 + -0x79d8);
  pcVar42 = mbsnwidth;
  (*pcVar33)();
  puVar8 = *(undefined4 **)(pcVar33 + 0x46c58);
  pcVar40 = *(code **)(pcVar33 + 0x46bd8);
  *(undefined4 **)(puVar35 + -0x1bc) = puVar8;
  *(code **)(puVar35 + -0x1c8) = pcVar33 + 0x4e5f0;
  *(byte **)(puVar35 + -400) = unaff_s6;
  *(byte **)(puVar35 + -0x1a4) = pbVar29;
  pbVar31 = pbVar28 + (int)pbVar43;
  *(code **)(puVar35 + -0x184) = pcVar42;
  *(undefined1 **)(puVar35 + -0x188) = puVar39;
  *(byte **)(puVar35 + -0x18c) = pbVar23;
  *(byte **)(puVar35 + -0x194) = unaff_s5;
  *(byte **)(puVar35 + -0x198) = unaff_s4;
  *(byte **)(puVar35 + -0x19c) = pbVar6;
  *(byte **)(puVar35 + -0x1a0) = pbVar10;
  *(byte **)(puVar35 + -0x1a8) = param_1;
  *(byte **)(puVar35 + -0x178) = pbVar24;
  *(undefined4 *)(puVar35 + -0x1ac) = *puVar8;
  uVar5 = (*pcVar40)();
  iVar15 = *(int *)(puVar35 + -0x1c8);
  if (uVar5 < 2) {
    pbVar6 = (byte *)0x0;
    if (pbVar28 < pbVar31) {
      piVar13 = (int *)(**(code **)(iVar15 + -0x7bb4))();
      pbVar43 = (byte *)0x7fffffff;
      iVar15 = *(int *)(puVar35 + -0x1c8);
      do {
        pbVar24 = pbVar28 + 1;
        uVar1 = *(ushort *)(*piVar13 + (uint)*pbVar28 * 2);
        if ((uVar1 & 0x40) == 0) {
          if ((*(uint *)(puVar35 + -0x178) & 2) != 0) goto LAB_0002f210;
          if ((uVar1 & 0x200) == 0) goto LAB_0002f1dc;
        }
        else {
LAB_0002f1dc:
          piVar19 = *(int **)(puVar35 + -0x1bc);
          if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f064;
          pbVar6 = pbVar6 + 1;
        }
        pbVar28 = pbVar24;
      } while (pbVar31 != pbVar24);
      piVar19 = *(int **)(puVar35 + -0x1bc);
      goto LAB_0002f064;
    }
  }
  else {
    pbVar6 = (byte *)0x0;
    if (pbVar28 < pbVar31) {
      *(uint *)(puVar35 + -0x1c0) = *(uint *)(puVar35 + -0x178) & 2;
      do {
        iVar9 = (int)(char)*pbVar28;
        if (iVar9 < 0x40) {
          if ((0x24 < iVar9) || ((iVar9 - 0x20U & 0xff) < 4)) goto LAB_0002f050;
LAB_0002f0c8:
          *(undefined4 *)(puVar35 + -0x1b4) = 0;
          *(undefined4 *)(puVar35 + -0x1b0) = 0;
          do {
            pbVar43 = pbVar28;
            iVar9 = rpl_mbrtowc(puVar35 + -0x1b8,pbVar28,(int)pbVar31 - (int)pbVar28,
                                puVar35 + -0x1b4);
            iVar15 = *(int *)(puVar35 + -0x1c8);
            if (iVar9 == -1) {
              if ((*(uint *)(puVar35 + -0x178) & 1) == 0) goto LAB_0002f050;
              goto LAB_0002f210;
            }
            if (iVar9 == -2) {
              if ((*(uint *)(puVar35 + -0x178) & 1) != 0) goto LAB_0002f210;
              pbVar6 = pbVar6 + 1;
              pbVar28 = pbVar31;
              break;
            }
            if (iVar9 == 0) {
              iVar9 = 1;
            }
            iVar11 = (**(code **)(iVar15 + -0x797c))(*(undefined4 *)(puVar35 + -0x1b8));
            iVar15 = *(int *)(puVar35 + -0x1c8);
            if (iVar11 < 0) {
              if (*(int *)(puVar35 + -0x1c0) != 0) goto LAB_0002f210;
              iVar11 = (**(code **)(iVar15 + -0x79ec))(*(undefined4 *)(puVar35 + -0x1b8));
              iVar15 = *(int *)(puVar35 + -0x1c8);
              if (iVar11 == 0) {
                if (pbVar6 == (byte *)0x7fffffff) goto LAB_0002f234;
                pbVar6 = pbVar6 + 1;
              }
            }
            else {
              if (0x7fffffff - (int)pbVar6 < iVar11) {
LAB_0002f234:
                pbVar6 = (byte *)0x7fffffff;
                goto LAB_0002f060;
              }
              pbVar6 = pbVar6 + iVar11;
            }
            pbVar28 = pbVar28 + iVar9;
            iVar9 = (**(code **)(iVar15 + -0x799c))(puVar35 + -0x1b4);
            iVar15 = *(int *)(puVar35 + -0x1c8);
          } while (iVar9 == 0);
        }
        else {
          if ((iVar9 < 0x41) || ((0x5f < iVar9 && (0x1d < (iVar9 - 0x61U & 0xff)))))
          goto LAB_0002f0c8;
LAB_0002f050:
          pbVar6 = pbVar6 + 1;
          pbVar28 = pbVar28 + 1;
        }
      } while (pbVar28 < pbVar31);
    }
  }
LAB_0002f060:
  piVar19 = *(int **)(puVar35 + -0x1bc);
LAB_0002f064:
  iVar9 = *(int *)(puVar35 + -0x1ac);
  if (iVar9 == *piVar19) {
    return pbVar6;
  }
  pcVar33 = *(code **)(iVar15 + -0x79d8);
  pcVar42 = gnu_mbswidth;
  (*pcVar33)();
  pcVar40 = *(code **)(pcVar33 + 0x468a8);
  *(byte **)(puVar35 + -0x1e0) = pbVar31;
  *(byte **)(puVar35 + -0x1e4) = pbVar6;
  *(code **)(puVar35 + -0x1dc) = pcVar42;
  *(code **)(puVar35 + -0x1f0) = pcVar33 + 0x4e334;
  uVar41 = (*pcVar40)();
  pbVar28 = (byte *)mbsnwidth(iVar9,uVar41,pbVar43);
  return pbVar28;
}

