
_Bool mbsstr_trimmed_wordbounded(char *string,char *sub)

{
  mbstate_t_conflict *pmVar1;
  char cVar2;
  long lVar3;
  _Bool _Var4;
  int iVar5;
  char *needle;
  size_t sVar6;
  byte *pbVar7;
  size_t sVar8;
  ushort **ppuVar9;
  ulong uVar10;
  byte bVar11;
  byte bVar12;
  char *pcVar13;
  _Bool _Var14;
  long in_FS_OFFSET;
  byte bVar16;
  bool local_c9;
  mbui_iterator_t string_iter;
  mbui_iterator_t tsub_iter;
  byte bVar15;
  
  bVar16 = 0;
  lVar3 = *(long *)(in_FS_OFFSET + 0x28);
  needle = trim2(sub,L'\x02');
LAB_001044df:
  do {
    if (*string == 0) {
      _Var14 = false;
LAB_00104442:
      free(needle);
      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {
        return _Var14;
      }
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
    pbVar7 = (byte *)mbsstr(string,needle);
    if (pbVar7 == (byte *)0x0) {
      _Var14 = false;
      goto LAB_00104442;
    }
    sVar8 = __ctype_get_mb_cur_max();
    if (1 < sVar8) {
      string_iter.in_shift = false;
      string_iter.state.__count = L'\0';
      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;
      if (string < pbVar7) {
        pmVar1 = &string_iter.state;
        string_iter.cur.ptr = string;
        do {
          string_iter.next_done = false;
          if (string_iter.in_shift == false) {
            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>
                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {
              iVar5 = mbsinit((mbstate_t *)pmVar1);
              if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              string_iter.in_shift = true;
              goto LAB_00103ba8;
            }
            string_iter.cur.bytes = 1;
            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;
            string_iter.cur.wc_valid = true;
          }
          else {
LAB_00103ba8:
            sVar8 = __ctype_get_mb_cur_max();
            pcVar13 = string_iter.cur.ptr;
            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);
            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);
            if (string_iter.cur.bytes == 0xffffffffffffffff) {
              string_iter.cur.bytes = 1;
              string_iter.cur.wc_valid = false;
            }
            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
              uVar10 = 0xffffffffffffffff;
              pcVar13 = string_iter.cur.ptr;
              do {
                if (uVar10 == 0) break;
                uVar10 = uVar10 - 1;
                cVar2 = *pcVar13;
                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;
              } while (cVar2 != '\0');
              string_iter.cur.bytes = ~uVar10 - 1;
              string_iter.cur.wc_valid = false;
            }
            else {
              if (string_iter.cur.bytes == 0) {
                string_iter.cur.bytes = 1;
                if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              string_iter.cur.wc_valid = true;
              iVar5 = mbsinit((mbstate_t *)pmVar1);
              if (iVar5 != 0) {
                string_iter.in_shift = false;
              }
            }
          }
          string_iter.next_done = true;
          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {
                    /* WARNING: Subroutine does not return */
            abort();
          }
          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;
          string_iter.next_done = false;
        } while (string_iter.cur.ptr < pbVar7);
        local_c9 = true;
        if (string_iter.cur.wc_valid != false) {
          iVar5 = iswalnum(string_iter.cur.wc);
          local_c9 = iVar5 == 0;
        }
      }
      else {
        local_c9 = true;
      }
      string_iter.in_shift = false;
      string_iter.state.__count = L'\0';
      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;
      tsub_iter.in_shift = false;
      tsub_iter.state.__count = L'\0';
      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;
      pmVar1 = &tsub_iter.state;
      string_iter.cur.ptr = (char *)pbVar7;
      tsub_iter.cur.ptr = needle;
      do {
        tsub_iter.next_done = false;
        string_iter.next_done = false;
        if (tsub_iter.in_shift == false) {
          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>
               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {
            iVar5 = mbsinit((mbstate_t *)pmVar1);
            if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
            }
            tsub_iter.in_shift = true;
            goto LAB_00103fc8;
          }
          tsub_iter.cur.bytes = 1;
          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;
          tsub_iter.cur.wc_valid = true;
        }
        else {
LAB_00103fc8:
          sVar8 = __ctype_get_mb_cur_max();
          pcVar13 = tsub_iter.cur.ptr;
          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);
          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);
          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {
            tsub_iter.cur.bytes = 1;
            tsub_iter.cur.wc_valid = false;
          }
          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {
            uVar10 = 0xffffffffffffffff;
            pcVar13 = tsub_iter.cur.ptr;
            do {
              if (uVar10 == 0) break;
              uVar10 = uVar10 - 1;
              cVar2 = *pcVar13;
              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;
            } while (cVar2 != '\0');
            tsub_iter.cur.bytes = ~uVar10 - 1;
            tsub_iter.cur.wc_valid = false;
          }
          else {
            if (tsub_iter.cur.bytes == 0) {
              tsub_iter.cur.bytes = 1;
              if (*tsub_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
              }
              if (tsub_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
              }
            }
            tsub_iter.cur.wc_valid = true;
            iVar5 = mbsinit((mbstate_t *)pmVar1);
            if (iVar5 != 0) {
              tsub_iter.in_shift = false;
            }
          }
        }
        _Var4 = tsub_iter.cur.wc_valid;
        tsub_iter.next_done = true;
        _Var14 = tsub_iter.next_done;
        tsub_iter.next_done = true;
        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;
        tsub_iter.next_done = _Var14;
        if (string_iter.next_done == false) {
          if (string_iter.in_shift == false) {
            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>
                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {
              iVar5 = mbsinit((mbstate_t *)&string_iter.state);
              if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              string_iter.in_shift = true;
              goto LAB_00103db9;
            }
            string_iter.cur.bytes = 1;
            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;
            string_iter.cur.wc_valid = true;
          }
          else {
LAB_00103db9:
            sVar8 = __ctype_get_mb_cur_max();
            pcVar13 = string_iter.cur.ptr;
            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);
            string_iter.cur.bytes =
                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);
            if (string_iter.cur.bytes == 0xffffffffffffffff) {
              string_iter.cur.bytes = 1;
              string_iter.cur.wc_valid = false;
            }
            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
              uVar10 = 0xffffffffffffffff;
              pcVar13 = string_iter.cur.ptr;
              do {
                if (uVar10 == 0) break;
                uVar10 = uVar10 - 1;
                cVar2 = *pcVar13;
                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;
              } while (cVar2 != '\0');
              string_iter.cur.bytes = ~uVar10 - 1;
              string_iter.cur.wc_valid = false;
            }
            else {
              if (string_iter.cur.bytes == 0) {
                string_iter.cur.bytes = 1;
                if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              string_iter.cur.wc_valid = true;
              iVar5 = mbsinit((mbstate_t *)&string_iter.state);
              if (iVar5 != 0) {
                string_iter.in_shift = false;
              }
            }
          }
          string_iter.next_done = true;
        }
        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {
                    /* WARNING: Subroutine does not return */
          abort();
        }
        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;
        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;
      } while( true );
    }
    if (string < pbVar7) {
      ppuVar9 = __ctype_b_loc();
      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;
      uVar10 = 0xffffffffffffffff;
      pcVar13 = needle;
      do {
        if (uVar10 == 0) break;
        uVar10 = uVar10 - 1;
        cVar2 = *pcVar13;
        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;
      } while (cVar2 != '\0');
      bVar11 = pbVar7[~uVar10 - 1];
      bVar12 = 1;
      if (bVar11 != 0) goto LAB_001044ac;
    }
    else {
      uVar10 = 0xffffffffffffffff;
      pcVar13 = needle;
      do {
        if (uVar10 == 0) break;
        uVar10 = uVar10 - 1;
        cVar2 = *pcVar13;
        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;
      } while (cVar2 != '\0');
      bVar11 = pbVar7[~uVar10 - 1];
      if (bVar11 == 0) {
        _Var14 = true;
        goto LAB_00104442;
      }
      bVar15 = 1;
LAB_001044ac:
      ppuVar9 = __ctype_b_loc();
      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;
    }
    _Var14 = (_Bool)(bVar15 & bVar12);
    if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;
    string = (char *)(pbVar7 + 1);
  } while( true );
LAB_001040e2:
  if (string_iter.next_done != false) goto LAB_0010412c;
  if (string_iter.in_shift == false) {
    if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>
         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {
      iVar5 = mbsinit((mbstate_t *)&string_iter.state);
      if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
      }
      string_iter.in_shift = true;
      goto LAB_001041e7;
    }
    string_iter.cur.bytes = 1;
    string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;
    string_iter.cur.wc_valid = true;
  }
  else {
LAB_001041e7:
    sVar8 = __ctype_get_mb_cur_max();
    pcVar13 = string_iter.cur.ptr;
    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);
    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);
    if (string_iter.cur.bytes == 0xffffffffffffffff) {
      string_iter.cur.bytes = 1;
      string_iter.cur.wc_valid = false;
    }
    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
      uVar10 = 0xffffffffffffffff;
      pcVar13 = string_iter.cur.ptr;
      do {
        if (uVar10 == 0) break;
        uVar10 = uVar10 - 1;
        cVar2 = *pcVar13;
        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;
      } while (cVar2 != '\0');
      string_iter.cur.bytes = ~uVar10 - 1;
      string_iter.cur.wc_valid = false;
    }
    else {
      if (string_iter.cur.bytes == 0) {
        string_iter.cur.bytes = 1;
        if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      string_iter.cur.wc_valid = true;
      iVar5 = mbsinit((mbstate_t *)&string_iter.state);
      if (iVar5 != 0) {
        string_iter.in_shift = false;
      }
    }
  }
  string_iter.next_done = true;
LAB_0010412c:
  if (((string_iter.cur.wc_valid == false) ||
      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&
     (bVar11 = _Var4, string_iter.cur.wc_valid != false)) {
    iVar5 = iswalnum(string_iter.cur.wc);
    bVar11 = iVar5 == 0;
  }
  _Var14 = (_Bool)(local_c9 & bVar11);
  if (_Var14 != false) goto LAB_00104442;
  string_iter.in_shift = false;
  string_iter.state.__count = L'\0';
  string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;
  string_iter.next_done = false;
  if ((*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1) == 0) {
    string_iter.cur.ptr = (char *)pbVar7;
    iVar5 = mbsinit((mbstate_t *)&string_iter.state);
    if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
    }
    string_iter.in_shift = true;
    sVar8 = __ctype_get_mb_cur_max();
    pcVar13 = string_iter.cur.ptr;
    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);
    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);
    if (string_iter.cur.bytes == 0xffffffffffffffff) {
      string_iter.cur.bytes = 1;
      string_iter.cur.wc_valid = false;
    }
    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
      uVar10 = 0xffffffffffffffff;
      pcVar13 = string_iter.cur.ptr;
      do {
        if (uVar10 == 0) break;
        uVar10 = uVar10 - 1;
        cVar2 = *pcVar13;
        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;
      } while (cVar2 != '\0');
      string_iter.cur.bytes = ~uVar10 - 1;
      string_iter.cur.wc_valid = false;
    }
    else {
      if (string_iter.cur.bytes == 0) {
        string_iter.cur.bytes = 1;
        if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      string_iter.cur.wc_valid = true;
      iVar5 = mbsinit((mbstate_t *)&string_iter.state);
      if (iVar5 != 0) {
        string_iter.in_shift = false;
      }
    }
  }
  else {
    string_iter.cur.bytes = 1;
    string_iter.cur.wc = (wchar_t)(char)*pbVar7;
    string_iter.cur.wc_valid = true;
    string_iter.cur.ptr = (char *)pbVar7;
  }
  string_iter.next_done = true;
  if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) goto LAB_00104442;
  string = (char *)(pbVar7 + string_iter.cur.bytes);
  goto LAB_001044df;
}



byte FUN_00103b21(byte *param_1,undefined8 param_2)

{
  bool bVar1;
  undefined1 uVar2;
  int iVar3;
  byte *__ptr;
  undefined8 uVar4;
  byte *pbVar5;
  size_t sVar6;
  ushort **ppuVar7;
  ulong uVar8;
  byte bVar9;
  byte *pbVar10;
  byte bVar11;
  byte bVar12;
  long in_FS_OFFSET;
  byte bVar13;
  bool local_c9;
  mbstate_t local_c4;
  char local_bc;
  byte *local_b8;
  long local_b0;
  byte local_a8;
  wint_t local_a4 [7];
  char local_88;
  mbstate_t local_84;
  undefined1 local_7c;
  byte *local_78;
  long local_70;
  byte local_68;
  int local_64 [9];
  long local_40;
  
  bVar13 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  __ptr = (byte *)FUN_001048bd(param_2,2);
LAB_001044df:
  do {
    if (*param_1 == 0) {
      bVar12 = 0;
LAB_00104442:
      free(__ptr);
      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
        return bVar12;
      }
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);
    if (pbVar5 == (byte *)0x0) {
      bVar12 = 0;
      goto LAB_00104442;
    }
    sVar6 = __ctype_get_mb_cur_max();
    if (1 < sVar6) {
      bVar1 = false;
      local_c4.__count = 0;
      local_c4.__value = (_union_27)0x0;
      if (param_1 < pbVar5) {
        local_b8 = param_1;
        do {
          local_bc = 0;
          if (bVar1) {
LAB_00103ba8:
            sVar6 = __ctype_get_mb_cur_max();
            pbVar10 = local_b8;
            uVar4 = FUN_00104889(local_b8,sVar6);
            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
            if (local_b0 == -1) {
              local_b0 = 1;
              local_a8 = 0;
            }
            else if (local_b0 == -2) {
              uVar8 = 0xffffffffffffffff;
              pbVar10 = local_b8;
              do {
                if (uVar8 == 0) break;
                uVar8 = uVar8 - 1;
                bVar12 = *pbVar10;
                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
              } while (bVar12 != 0);
              local_b0 = ~uVar8 - 1;
              local_a8 = 0;
            }
            else {
              if (local_b0 == 0) {
                local_b0 = 1;
                if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              local_a8 = 1;
              iVar3 = mbsinit(&local_c4);
              if (iVar3 != 0) {
                bVar1 = false;
              }
            }
          }
          else {
            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)
                == 0) {
              iVar3 = mbsinit(&local_c4);
              if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              bVar1 = true;
              goto LAB_00103ba8;
            }
            local_b0 = 1;
            local_a4[0] = (wint_t)(char)*local_b8;
            local_a8 = 1;
          }
          local_bc = 1;
          if ((local_a8 != 0) && (local_a4[0] == 0)) {
                    /* WARNING: Subroutine does not return */
            abort();
          }
          local_b8 = local_b8 + local_b0;
          local_bc = 0;
        } while (local_b8 < pbVar5);
        local_c9 = true;
        if (local_a8 != 0) {
          iVar3 = iswalnum(local_a4[0]);
          local_c9 = iVar3 == 0;
        }
      }
      else {
        local_c9 = true;
      }
      bVar1 = false;
      local_c4.__count = 0;
      local_c4.__value = (_union_27)0x0;
      local_88 = '\0';
      local_84.__count = 0;
      local_84.__value = (_union_27)0x0;
      local_b8 = pbVar5;
      local_78 = __ptr;
      do {
        local_7c = 0;
        local_bc = '\0';
        if (local_88 == '\0') {
          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==
              0) {
            iVar3 = mbsinit(&local_84);
            if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
            }
            local_88 = '\x01';
            goto LAB_00103fc8;
          }
          local_70 = 1;
          local_64[0] = (int)(char)*local_78;
          local_68 = 1;
        }
        else {
LAB_00103fc8:
          sVar6 = __ctype_get_mb_cur_max();
          pbVar10 = local_78;
          uVar4 = FUN_00104889(local_78,sVar6);
          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);
          if (local_70 == -1) {
            local_70 = 1;
            local_68 = 0;
          }
          else if (local_70 == -2) {
            uVar8 = 0xffffffffffffffff;
            pbVar10 = local_78;
            do {
              if (uVar8 == 0) break;
              uVar8 = uVar8 - 1;
              bVar12 = *pbVar10;
              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
            } while (bVar12 != 0);
            local_70 = ~uVar8 - 1;
            local_68 = 0;
          }
          else {
            if (local_70 == 0) {
              local_70 = 1;
              if (*local_78 != 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
              }
              if (local_64[0] != 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
              }
            }
            local_68 = 1;
            iVar3 = mbsinit(&local_84);
            if (iVar3 != 0) {
              local_88 = '\0';
            }
          }
        }
        bVar11 = local_68;
        local_7c = 1;
        uVar2 = local_7c;
        local_7c = 1;
        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;
        local_7c = uVar2;
        if (local_bc == '\0') {
          if (bVar1) {
LAB_00103db9:
            sVar6 = __ctype_get_mb_cur_max();
            pbVar10 = local_b8;
            uVar4 = FUN_00104889(local_b8,sVar6);
            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
            if (local_b0 == -1) {
              local_b0 = 1;
              local_a8 = 0;
            }
            else if (local_b0 == -2) {
              uVar8 = 0xffffffffffffffff;
              pbVar10 = local_b8;
              do {
                if (uVar8 == 0) break;
                uVar8 = uVar8 - 1;
                bVar12 = *pbVar10;
                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
              } while (bVar12 != 0);
              local_b0 = ~uVar8 - 1;
              local_a8 = 0;
            }
            else {
              if (local_b0 == 0) {
                local_b0 = 1;
                if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              local_a8 = 1;
              iVar3 = mbsinit(&local_c4);
              if (iVar3 != 0) {
                bVar1 = false;
              }
            }
          }
          else {
            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)
                == 0) {
              iVar3 = mbsinit(&local_c4);
              if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              bVar1 = true;
              goto LAB_00103db9;
            }
            local_b0 = 1;
            local_a4[0] = (wint_t)(char)*local_b8;
            local_a8 = 1;
          }
          local_bc = '\x01';
        }
        if ((local_a8 != 0) && (local_a4[0] == 0)) {
                    /* WARNING: Subroutine does not return */
          abort();
        }
        local_b8 = local_b8 + local_b0;
        local_78 = local_78 + local_70;
      } while( true );
    }
    if (param_1 < pbVar5) {
      ppuVar7 = __ctype_b_loc();
      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;
      uVar8 = 0xffffffffffffffff;
      pbVar10 = __ptr;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar11 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar11 != 0);
      bVar11 = pbVar5[~uVar8 - 1];
      bVar9 = 1;
      if (bVar11 != 0) goto LAB_001044ac;
    }
    else {
      uVar8 = 0xffffffffffffffff;
      pbVar10 = __ptr;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar12 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar12 != 0);
      bVar11 = pbVar5[~uVar8 - 1];
      if (bVar11 == 0) {
        bVar12 = 1;
        goto LAB_00104442;
      }
      bVar12 = 1;
LAB_001044ac:
      ppuVar7 = __ctype_b_loc();
      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;
    }
    bVar12 = bVar12 & bVar9;
    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;
    param_1 = pbVar5 + 1;
  } while( true );
LAB_001040e2:
  if (local_bc != '\0') goto LAB_0010412c;
  if (bVar1) {
LAB_001041e7:
    sVar6 = __ctype_get_mb_cur_max();
    pbVar10 = local_b8;
    uVar4 = FUN_00104889(local_b8,sVar6);
    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
    if (local_b0 == -1) {
      local_b0 = 1;
      local_a8 = 0;
    }
    else if (local_b0 == -2) {
      uVar8 = 0xffffffffffffffff;
      pbVar10 = local_b8;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar12 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar12 != 0);
      local_b0 = ~uVar8 - 1;
      local_a8 = 0;
    }
    else {
      if (local_b0 == 0) {
        local_b0 = 1;
        if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      local_a8 = 1;
      mbsinit(&local_c4);
    }
  }
  else {
    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {
      iVar3 = mbsinit(&local_c4);
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
      }
      goto LAB_001041e7;
    }
    local_b0 = 1;
    local_a4[0] = (wint_t)(char)*local_b8;
    local_a8 = 1;
  }
  local_bc = '\x01';
LAB_0010412c:
  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)
     ) {
    iVar3 = iswalnum(local_a4[0]);
    bVar12 = iVar3 == 0;
  }
  bVar12 = local_c9 & bVar12;
  if (bVar12 != 0) goto LAB_00104442;
  local_c4.__count = 0;
  local_c4.__value = (_union_27)0x0;
  local_bc = 0;
  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {
    local_b8 = pbVar5;
    iVar3 = mbsinit(&local_c4);
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
    }
    sVar6 = __ctype_get_mb_cur_max();
    pbVar10 = local_b8;
    uVar4 = FUN_00104889(local_b8,sVar6);
    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
    if (local_b0 == -1) {
      local_b0 = 1;
      local_a8 = 0;
    }
    else if (local_b0 == -2) {
      uVar8 = 0xffffffffffffffff;
      pbVar10 = local_b8;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar11 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar11 != 0);
      local_b0 = ~uVar8 - 1;
      local_a8 = 0;
    }
    else {
      if (local_b0 == 0) {
        local_b0 = 1;
        if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      local_a8 = 1;
      mbsinit(&local_c4);
    }
  }
  else {
    local_b0 = 1;
    local_a4[0] = (wint_t)(char)*pbVar5;
    local_a8 = 1;
    local_b8 = pbVar5;
  }
  local_bc = '\x01';
  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;
  param_1 = pbVar5 + local_b0;
  goto LAB_001044df;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0xa8
MOV RBX,RDI
MOV RDI,RSI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x98],RAX
XOR EAX,EAX
MOV ESI,0x2
CALL 0x001048bd
MOV qword ptr [RSP],RAX
LEA RBP,[RSP + 0x10]
LEA R12,[0x109ea0]
JMP 0x001044df
MOV qword ptr [RSP + 0x20],RBX
MOV byte ptr [RSP + 0x10],0x0
MOV qword ptr [RBP + 0x4],0x0
MOV byte ptr [RSP + 0x1c],0x0
CMP RBX,R13
JNC 0x00103d9c
LEA R14,[RBP + 0x4]
JMP 0x00103c8d
MOV RDI,R14
CALL 0x00102370
TEST EAX,EAX
JZ 0x00103c23
MOV byte ptr [RSP + 0x10],0x1
CALL 0x00102100
MOV RBX,qword ptr [RSP + 0x20]
MOV RSI,RAX
MOV RDI,RBX
CALL 0x00104889
LEA RDI,[RBP + 0x24]
MOV RCX,R14
MOV RDX,RAX
MOV RSI,RBX
CALL 0x00105ccf
MOV qword ptr [RSP + 0x28],RAX
CMP RAX,-0x1
JZ 0x00103c42
CMP RAX,-0x2
JZ 0x00103cd7
TEST RAX,RAX
JNZ 0x00103c0b
MOV qword ptr [RSP + 0x28],0x1
MOV RAX,qword ptr [RSP + 0x20]
CMP byte ptr [RAX],0x0
JNZ 0x00103d03
CMP dword ptr [RSP + 0x34],0x0
JNZ 0x00103d22
MOV byte ptr [RSP + 0x30],0x1
MOV RDI,R14
CALL 0x00102370
TEST EAX,EAX
JZ 0x00103c50
MOV byte ptr [RSP + 0x10],0x0
JMP 0x00103c50
LEA RCX,[0x1098e0]
MOV EDX,0x96
LEA RSI,[0x109884]
LEA RDI,[0x10988e]
CALL 0x00102170
MOV qword ptr [RSP + 0x28],0x1
MOV byte ptr [RSP + 0x30],0x0
MOV byte ptr [RSP + 0x1c],0x1
CMP byte ptr [RSP + 0x30],0x0
JZ 0x00103c67
CMP dword ptr [RSP + 0x34],0x0
JZ 0x00103d41
MOVZX EDX,byte ptr [RSP + 0x30]
MOV EDI,dword ptr [RSP + 0x34]
MOV RAX,qword ptr [RSP + 0x28]
ADD RAX,qword ptr [RSP + 0x20]
MOV qword ptr [RSP + 0x20],RAX
MOV byte ptr [RSP + 0x1c],0x0
CMP RAX,R13
JNC 0x00103d46
CMP byte ptr [RSP + 0x1c],0x0
JNZ 0x00103c55
CMP byte ptr [RSP + 0x10],0x0
JNZ 0x00103ba8
MOV RDX,qword ptr [RSP + 0x20]
MOVZX ECX,byte ptr [RDX]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x7
MOV EAX,dword ptr [R12 + RAX*0x4]
SHR EAX,CL
TEST AL,0x1
JZ 0x00103b93
MOV qword ptr [RSP + 0x28],0x1
MOVSX EAX,byte ptr [RDX]
MOV dword ptr [RSP + 0x34],EAX
MOV byte ptr [RSP + 0x30],0x1
JMP 0x00103c50
MOV RDI,qword ptr [RSP + 0x20]
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [RSP + 0x28],RAX
MOV byte ptr [RSP + 0x30],0x0
JMP 0x00103c50
LEA RCX,[0x1098e0]
MOV EDX,0xb2
LEA RSI,[0x109884]
LEA RDI,[0x1098a5]
CALL 0x00102170
LEA RCX,[0x1098e0]
MOV EDX,0xb3
LEA RSI,[0x109884]
LEA RDI,[0x1098bc]
CALL 0x00102170
CALL 0x00102040
MOV byte ptr [RSP + 0xf],0x1
TEST DL,DL
JZ 0x00103d5b
CALL 0x00102270
TEST EAX,EAX
SETZ byte ptr [RSP + 0xf]
MOV qword ptr [RSP + 0x20],R13
MOV byte ptr [RSP + 0x10],0x0
MOV qword ptr [RBP + 0x4],0x0
MOV byte ptr [RSP + 0x1c],0x0
MOV RAX,qword ptr [RSP]
MOV qword ptr [RSP + 0x60],RAX
MOV byte ptr [RSP + 0x50],0x0
MOV qword ptr [RSP + 0x54],0x0
MOV byte ptr [RSP + 0x5c],0x0
LEA R15,[RSP + 0x50]
LEA R14,[R15 + 0x4]
JMP 0x00103e98
MOV byte ptr [RSP + 0xf],0x1
JMP 0x00103d5b
LEA RDI,[RBP + 0x4]
CALL 0x00102370
TEST EAX,EAX
JZ 0x00103e36
MOV byte ptr [RSP + 0x10],0x1
CALL 0x00102100
MOV RBX,qword ptr [RSP + 0x20]
MOV RSI,RAX
MOV RDI,RBX
CALL 0x00104889
LEA RCX,[RBP + 0x4]
LEA RDI,[RBP + 0x24]
MOV RDX,RAX
MOV RSI,RBX
CALL 0x00105ccf
MOV qword ptr [RSP + 0x28],RAX
CMP RAX,-0x1
JZ 0x00103e55
CMP RAX,-0x2
JZ 0x00103f44
TEST RAX,RAX
JNZ 0x00103e1d
MOV qword ptr [RSP + 0x28],0x1
MOV RAX,qword ptr [RSP + 0x20]
CMP byte ptr [RAX],0x0
JNZ 0x00103f70
CMP dword ptr [RSP + 0x34],0x0
JNZ 0x00103f8f
MOV byte ptr [RSP + 0x30],0x1
LEA RDI,[RBP + 0x4]
CALL 0x00102370
TEST EAX,EAX
JZ 0x00103e63
MOV byte ptr [RSP + 0x10],0x0
JMP 0x00103e63
LEA RCX,[0x1098e0]
MOV EDX,0x96
LEA RSI,[0x109884]
LEA RDI,[0x10988e]
CALL 0x00102170
MOV qword ptr [RSP + 0x28],0x1
MOV byte ptr [RSP + 0x30],0x0
MOV byte ptr [RSP + 0x1c],0x1
CMP byte ptr [RSP + 0x30],0x0
JZ 0x00103e7a
CMP dword ptr [RSP + 0x34],0x0
JZ 0x00103fae
MOV RAX,qword ptr [RSP + 0x28]
ADD qword ptr [RSP + 0x20],RAX
MOV byte ptr [RSP + 0x1c],0x0
MOV RAX,qword ptr [RSP + 0x68]
ADD qword ptr [RSP + 0x60],RAX
MOV byte ptr [RSP + 0x5c],0x0
CMP byte ptr [RSP + 0x5c],0x0
JNZ 0x00103ee2
CMP byte ptr [RSP + 0x50],0x0
JNZ 0x00103fc8
MOV RDX,qword ptr [RSP + 0x60]
MOVZX ECX,byte ptr [RDX]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x7
MOV EAX,dword ptr [R12 + RAX*0x4]
SHR EAX,CL
TEST AL,0x1
JZ 0x00103fb3
MOV qword ptr [RSP + 0x68],0x1
MOVSX EAX,byte ptr [RDX]
MOV dword ptr [RSP + 0x74],EAX
MOV byte ptr [RSP + 0x70],0x1
MOV byte ptr [RSP + 0x5c],0x1
MOVZX EBX,byte ptr [RSP + 0x70]
TEST BL,BL
JZ 0x00103ef6
CMP dword ptr [RSP + 0x74],0x0
JZ 0x001040e2
CMP byte ptr [RSP + 0x1c],0x0
JNZ 0x00103e68
CMP byte ptr [RSP + 0x10],0x0
JNZ 0x00103db9
MOV RDX,qword ptr [RSP + 0x20]
MOVZX ECX,byte ptr [RDX]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x7
MOV EAX,dword ptr [R12 + RAX*0x4]
SHR EAX,CL
TEST AL,0x1
JZ 0x00103da3
MOV qword ptr [RSP + 0x28],0x1
MOVSX EAX,byte ptr [RDX]
MOV dword ptr [RSP + 0x34],EAX
MOV byte ptr [RSP + 0x30],0x1
JMP 0x00103e63
MOV RDI,qword ptr [RSP + 0x20]
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [RSP + 0x28],RAX
MOV byte ptr [RSP + 0x30],0x0
JMP 0x00103e63
LEA RCX,[0x1098e0]
MOV EDX,0xb2
LEA RSI,[0x109884]
LEA RDI,[0x1098a5]
CALL 0x00102170
LEA RCX,[0x1098e0]
MOV EDX,0xb3
LEA RSI,[0x109884]
LEA RDI,[0x1098bc]
CALL 0x00102170
CALL 0x00102040
MOV RDI,R14
CALL 0x00102370
TEST EAX,EAX
JZ 0x00104046
MOV byte ptr [RSP + 0x50],0x1
CALL 0x00102100
MOV RBX,qword ptr [RSP + 0x60]
MOV RSI,RAX
MOV RDI,RBX
CALL 0x00104889
LEA RDI,[R15 + 0x24]
MOV RCX,R14
MOV RDX,RAX
MOV RSI,RBX
CALL 0x00105ccf
MOV qword ptr [RSP + 0x68],RAX
CMP RAX,-0x1
JZ 0x00104065
CMP RAX,-0x2
JZ 0x00104078
TEST RAX,RAX
JNZ 0x00104027
MOV qword ptr [RSP + 0x68],0x1
MOV RAX,qword ptr [RSP + 0x60]
CMP byte ptr [RAX],0x0
JNZ 0x001040a4
CMP dword ptr [RSP + 0x74],0x0
JNZ 0x001040c3
MOV byte ptr [RSP + 0x70],0x1
MOV RDI,R14
CALL 0x00102370
TEST EAX,EAX
JZ 0x00103edd
MOV byte ptr [RSP + 0x50],0x0
JMP 0x00103edd
LEA RCX,[0x1098e0]
MOV EDX,0x96
LEA RSI,[0x109884]
LEA RDI,[0x10988e]
CALL 0x00102170
MOV qword ptr [RSP + 0x68],0x1
MOV byte ptr [RSP + 0x70],0x0
JMP 0x00103edd
MOV RDI,qword ptr [RSP + 0x60]
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [RSP + 0x68],RAX
MOV byte ptr [RSP + 0x70],0x0
JMP 0x00103edd
LEA RCX,[0x1098e0]
MOV EDX,0xb2
LEA RSI,[0x109884]
LEA RDI,[0x1098a5]
CALL 0x00102170
LEA RCX,[0x1098e0]
MOV EDX,0xb3
LEA RSI,[0x109884]
LEA RDI,[0x1098bc]
CALL 0x00102170
CMP byte ptr [RSP + 0x1c],0x0
JNZ 0x0010412c
CMP byte ptr [RSP + 0x10],0x0
JNZ 0x001041e7
MOV RDX,qword ptr [RSP + 0x20]
MOVZX ECX,byte ptr [RDX]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x7
MOV EAX,dword ptr [R12 + RAX*0x4]
SHR EAX,CL
TEST AL,0x1
JZ 0x001041d1
MOV qword ptr [RSP + 0x28],0x1
MOVSX EAX,byte ptr [RDX]
MOV dword ptr [RSP + 0x34],EAX
MOV byte ptr [RSP + 0x30],0x1
MOV byte ptr [RSP + 0x1c],0x1
MOVZX EAX,byte ptr [RSP + 0x30]
TEST AL,AL
JZ 0x00104140
CMP dword ptr [RSP + 0x34],0x0
JZ 0x00104303
CMP byte ptr [RSP + 0x30],0x0
JZ 0x00104155
MOV EDI,dword ptr [RSP + 0x34]
CALL 0x00102270
TEST EAX,EAX
SETZ BL
MOVZX R15D,byte ptr [RSP + 0xf]
AND R15B,BL
JNZ 0x00104442
MOV qword ptr [RSP + 0x20],R13
MOV byte ptr [RSP + 0x10],0x0
MOV qword ptr [RBP + 0x4],0x0
MOV byte ptr [RSP + 0x1c],0x0
MOVZX ECX,byte ptr [R13]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x7
MOV EAX,dword ptr [R12 + RAX*0x4]
SHR EAX,CL
TEST AL,0x1
JZ 0x0010430a
MOV qword ptr [RSP + 0x28],0x1
MOVSX EAX,byte ptr [R13]
MOV dword ptr [RSP + 0x34],EAX
MOV byte ptr [RSP + 0x30],0x1
MOV byte ptr [RSP + 0x1c],0x1
CMP byte ptr [RSP + 0x30],0x0
JZ 0x001041c4
CMP dword ptr [RSP + 0x34],0x0
JZ 0x00104442
MOV RBX,R13
ADD RBX,qword ptr [RSP + 0x28]
JMP 0x001044df
LEA RDI,[RBP + 0x4]
CALL 0x00102370
TEST EAX,EAX
JZ 0x00104267
MOV byte ptr [RSP + 0x10],0x1
CALL 0x00102100
MOV R14,qword ptr [RSP + 0x20]
MOV RSI,RAX
MOV RDI,R14
CALL 0x00104889
LEA RCX,[RBP + 0x4]
LEA RDI,[RBP + 0x24]
MOV RDX,RAX
MOV RSI,R14
CALL 0x00105ccf
MOV qword ptr [RSP + 0x28],RAX
CMP RAX,-0x1
JZ 0x00104286
CMP RAX,-0x2
JZ 0x00104299
TEST RAX,RAX
JNZ 0x00104247
MOV qword ptr [RSP + 0x28],0x1
MOV RAX,qword ptr [RSP + 0x20]
CMP byte ptr [RAX],0x0
JNZ 0x001042c5
CMP dword ptr [RSP + 0x34],0x0
JNZ 0x001042e4
MOV byte ptr [RSP + 0x30],0x1
LEA RDI,[RBP + 0x4]
CALL 0x00102370
TEST EAX,EAX
JZ 0x00104127
MOV byte ptr [RSP + 0x10],0x0
JMP 0x00104127
LEA RCX,[0x1098e0]
MOV EDX,0x96
LEA RSI,[0x109884]
LEA RDI,[0x10988e]
CALL 0x00102170
MOV qword ptr [RSP + 0x28],0x1
MOV byte ptr [RSP + 0x30],0x0
JMP 0x00104127
MOV RDI,qword ptr [RSP + 0x20]
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [RSP + 0x28],RAX
MOV byte ptr [RSP + 0x30],0x0
JMP 0x00104127
LEA RCX,[0x1098e0]
MOV EDX,0xb2
LEA RSI,[0x109884]
LEA RDI,[0x1098a5]
CALL 0x00102170
LEA RCX,[0x1098e0]
MOV EDX,0xb3
LEA RSI,[0x109884]
LEA RDI,[0x1098bc]
CALL 0x00102170
MOV EBX,EAX
JMP 0x00104155
LEA RDI,[RBP + 0x4]
CALL 0x00102370
TEST EAX,EAX
JZ 0x001043a0
MOV byte ptr [RSP + 0x10],0x1
CALL 0x00102100
MOV RBX,qword ptr [RSP + 0x20]
MOV RSI,RAX
MOV RDI,RBX
CALL 0x00104889
LEA RCX,[RBP + 0x4]
LEA RDI,[RBP + 0x24]
MOV RDX,RAX
MOV RSI,RBX
CALL 0x00105ccf
MOV qword ptr [RSP + 0x28],RAX
CMP RAX,-0x1
JZ 0x001043bf
CMP RAX,-0x2
JZ 0x001043d2
TEST RAX,RAX
JNZ 0x00104380
MOV qword ptr [RSP + 0x28],0x1
MOV RAX,qword ptr [RSP + 0x20]
CMP byte ptr [RAX],0x0
JNZ 0x001043fe
CMP dword ptr [RSP + 0x34],0x0
JNZ 0x0010441d
MOV byte ptr [RSP + 0x30],0x1
LEA RDI,[RBP + 0x4]
CALL 0x00102370
TEST EAX,EAX
JZ 0x001041ad
MOV byte ptr [RSP + 0x10],0x0
JMP 0x001041ad
LEA RCX,[0x1098e0]
MOV EDX,0x96
LEA RSI,[0x109884]
LEA RDI,[0x10988e]
CALL 0x00102170
MOV qword ptr [RSP + 0x28],0x1
MOV byte ptr [RSP + 0x30],0x0
JMP 0x001041ad
MOV RDI,qword ptr [RSP + 0x20]
MOV EAX,0x0
MOV RCX,-0x1
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV qword ptr [RSP + 0x28],RAX
MOV byte ptr [RSP + 0x30],0x0
JMP 0x001041ad
LEA RCX,[0x1098e0]
MOV EDX,0xb2
LEA RSI,[0x109884]
LEA RDI,[0x1098a5]
CALL 0x00102170
LEA RCX,[0x1098e0]
MOV EDX,0xb3
LEA RSI,[0x109884]
LEA RDI,[0x1098bc]
CALL 0x00102170
MOV R15D,0x0
MOV RDI,qword ptr [RSP]
CALL 0x00102030
MOV EAX,R15D
MOV RSI,qword ptr [RSP + 0x98]
XOR RSI,qword ptr FS:[0x28]
JNZ 0x00104573
ADD RSP,0xa8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R15D,0x0
JMP 0x00104442
MOV EAX,0x0
MOV RCX,-0x1
MOV RDI,qword ptr [RSP]
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
MOVZX R14D,byte ptr [R13 + RAX*0x1 + -0x1]
TEST R14B,R14B
JZ 0x00104568
MOV R15D,0x1
CALL 0x00102390
MOVZX R14D,R14B
MOV RAX,qword ptr [RAX]
MOVZX EBX,word ptr [RAX + R14*0x2]
SHR BX,0x3
XOR EBX,0x1
AND EBX,0x1
AND R15B,BL
JNZ 0x00104442
CMP byte ptr [R13],0x0
JZ 0x00104442
LEA RBX,[R13 + 0x1]
CMP byte ptr [RBX],0x0
JZ 0x0010443c
MOV RSI,qword ptr [RSP]
MOV RDI,RBX
CALL 0x00106a98
MOV R13,RAX
TEST RAX,RAX
JZ 0x00104477
CALL 0x00102100
CMP RAX,0x1
JA 0x00103b6a
CMP RBX,R13
JNC 0x0010447f
CALL 0x00102390
MOVZX EDX,byte ptr [R13 + -0x1]
MOV RAX,qword ptr [RAX]
MOVZX R15D,word ptr [RAX + RDX*0x2]
SHR R15W,0x3
XOR R15D,0x1
AND R15D,0x1
MOV EAX,0x0
MOV RCX,-0x1
MOV RDI,qword ptr [RSP]
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
MOVZX R14D,byte ptr [R13 + RAX*0x1 + -0x1]
MOV EBX,0x1
TEST R14B,R14B
JZ 0x001044c7
JMP 0x001044ac
MOV R15D,0x1
JMP 0x00104442
CALL 0x00102110
(translation_unit "byte FUN_00103b21(byte *param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}\n\n" (function_definition "byte FUN_00103b21(byte *param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}" type_identifier (function_declarator "FUN_00103b21(byte *param_1,undefined8 param_2)" identifier (parameter_list "(byte *param_1,undefined8 param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "ushort **ppuVar7;" type_identifier (pointer_declarator "**ppuVar7" * (pointer_declarator "*ppuVar7" * identifier)) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "bool local_c9;" primitive_type identifier ;) (declaration "mbstate_t local_c4;" type_identifier identifier ;) (declaration "char local_bc;" primitive_type identifier ;) (declaration "byte *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "long local_b0;" (sized_type_specifier "long" long) identifier ;) (declaration "byte local_a8;" type_identifier identifier ;) (declaration "wint_t local_a4 [7];" type_identifier (array_declarator "local_a4 [7]" identifier [ number_literal ]) ;) (declaration "char local_88;" primitive_type identifier ;) (declaration "mbstate_t local_84;" type_identifier identifier ;) (declaration "undefined1 local_7c;" type_identifier identifier ;) (declaration "byte *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "byte local_68;" type_identifier identifier ;) (declaration "int local_64 [9];" primitive_type (array_declarator "local_64 [9]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__ptr = (byte *)FUN_001048bd(param_2,2);" (assignment_expression "__ptr = (byte *)FUN_001048bd(param_2,2)" identifier = (cast_expression "(byte *)FUN_001048bd(param_2,2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001048bd(param_2,2)" identifier (argument_list "(param_2,2)" ( identifier , number_literal ))))) ;) (labeled_statement "LAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );" do (compound_statement "{\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  }" { (if_statement "if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" { (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00104442:\n      free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n        return bVar12;\n      }" { (return_statement "return bVar12;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);" (assignment_expression "pbVar5 = (byte *)FUN_00106a98(param_1,__ptr)" identifier = (cast_expression "(byte *)FUN_00106a98(param_1,__ptr)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00106a98(param_1,__ptr)" identifier (argument_list "(param_1,__ptr)" ( identifier , identifier ))))) ;) (if_statement "if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar12 = 0;\n      goto LAB_00104442;\n    }" { (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00104442;" goto statement_identifier ;) })) (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (if_statement "if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }" if (parenthesized_expression "(1 < sVar6)" ( (binary_expression "1 < sVar6" number_literal < identifier) )) (compound_statement "{\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (if_statement "if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }" if (parenthesized_expression "(param_1 < pbVar5)" ( (binary_expression "param_1 < pbVar5" identifier < identifier) )) (compound_statement "{\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }" { (expression_statement "local_b8 = param_1;" (assignment_expression "local_b8 = param_1" identifier = identifier) ;) (do_statement "do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);" do (compound_statement "{\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        }" { (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (if_statement "if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }" { (labeled_statement "LAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n              local_b0 = 1;\n              local_a8 = 0;\n            }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (if_statement "if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);" do (compound_statement "{\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (compound_statement "{\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" { (if_statement "if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 != 0) {\n                bVar1 = false;\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                bVar1 = false;\n              }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) })) }))))) }) (else_clause "else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" else (compound_statement "{\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_b8 >> 5)" ( (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_b8 & 0x1f)" ( (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }" { (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (goto_statement "goto LAB_00103ba8;" goto statement_identifier ;) })) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) }))) (expression_statement "local_bc = 1;" (assignment_expression "local_bc = 1" identifier = number_literal) ;) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" if (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" ( (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_a4[0] == 0)" ( (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_b8 = local_b8 + local_b0;" (assignment_expression "local_b8 = local_b8 + local_b0" identifier = (binary_expression "local_b8 + local_b0" identifier + identifier)) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_b8 < pbVar5)" ( (binary_expression "local_b8 < pbVar5" identifier < identifier) )) ;) (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" identifier = true) ;) (if_statement "if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }" if (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }" { (expression_statement "iVar3 = iswalnum(local_a4[0]);" (assignment_expression "iVar3 = iswalnum(local_a4[0])" identifier = (call_expression "iswalnum(local_a4[0])" identifier (argument_list "(local_a4[0])" ( (subscript_expression "local_a4[0]" identifier [ number_literal ]) )))) ;) (expression_statement "local_c9 = iVar3 == 0;" (assignment_expression "local_c9 = iVar3 == 0" identifier = (binary_expression "iVar3 == 0" identifier == number_literal)) ;) })) }) (else_clause "else {\n        local_c9 = true;\n      }" else (compound_statement "{\n        local_c9 = true;\n      }" { (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" identifier = true) ;) }))) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "local_88 = '\0';" (assignment_expression "local_88 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_84.__count = 0;" (assignment_expression "local_84.__count = 0" (field_expression "local_84.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_84.__value = (_union_27)0x0;" (assignment_expression "local_84.__value = (_union_27)0x0" (field_expression "local_84.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" identifier = identifier) ;) (expression_statement "local_78 = __ptr;" (assignment_expression "local_78 = __ptr" identifier = identifier) ;) (do_statement "do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );" do (compound_statement "{\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_bc = '\0';" (assignment_expression "local_bc = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" if (parenthesized_expression "(local_88 == '\0')" ( (binary_expression "local_88 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_78 >> 5) * 4" (call_expression "(ulong)(*local_78 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_78 >> 5)" ( (binary_expression "*local_78 >> 5" (pointer_expression "*local_78" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_78 & 0x1f)" ( (binary_expression "*local_78 & 0x1f" (pointer_expression "*local_78" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }" { (expression_statement "iVar3 = mbsinit(&local_84);" (assignment_expression "iVar3 = mbsinit(&local_84)" identifier = (call_expression "mbsinit(&local_84)" identifier (argument_list "(&local_84)" ( (pointer_expression "&local_84" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "local_88 = '\x01';" (assignment_expression "local_88 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (goto_statement "goto LAB_00103fc8;" goto statement_identifier ;) })) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (expression_statement "local_64[0] = (int)(char)*local_78;" (assignment_expression "local_64[0] = (int)(char)*local_78" (subscript_expression "local_64[0]" identifier [ number_literal ]) = (cast_expression "(int)(char)*local_78" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*local_78" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_78" * identifier)))) ;) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" else (compound_statement "{\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" { (labeled_statement "LAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_78;" (assignment_expression "pbVar10 = local_78" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_78,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_78,sVar6)" identifier = (call_expression "FUN_00104889(local_78,sVar6)" identifier (argument_list "(local_78,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);" (assignment_expression "local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84)" identifier = (call_expression "FUN_00105ccf(local_64,pbVar10,uVar4,&local_84)" identifier (argument_list "(local_64,pbVar10,uVar4,&local_84)" ( identifier , identifier , identifier , (pointer_expression "&local_84" & identifier) )))) ;) (if_statement "if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" if (parenthesized_expression "(local_70 == -1)" ( (binary_expression "local_70 == -1" identifier == number_literal) )) (compound_statement "{\n            local_70 = 1;\n            local_68 = 0;\n          }" { (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" else (if_statement "if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" if (parenthesized_expression "(local_70 == -2)" ( (binary_expression "local_70 == -2" identifier == number_literal) )) (compound_statement "{\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_78;" (assignment_expression "pbVar10 = local_78" identifier = identifier) ;) (do_statement "do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);" do (compound_statement "{\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_70 = ~uVar8 - 1;" (assignment_expression "local_70 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" else (compound_statement "{\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" { (if_statement "if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" if (parenthesized_expression "(local_70 == 0)" ( (binary_expression "local_70 == 0" identifier == number_literal) )) (compound_statement "{\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" { (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (if_statement "if (*local_78 != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(*local_78 != 0)" ( (binary_expression "*local_78 != 0" (pointer_expression "*local_78" * identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_64[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(local_64[0] != 0)" ( (binary_expression "local_64[0] != 0" (subscript_expression "local_64[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = mbsinit(&local_84);" (assignment_expression "iVar3 = mbsinit(&local_84)" identifier = (call_expression "mbsinit(&local_84)" identifier (argument_list "(&local_84)" ( (pointer_expression "&local_84" & identifier) )))) ;) (if_statement "if (iVar3 != 0) {\n              local_88 = '\0';\n            }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              local_88 = '\0';\n            }" { (expression_statement "local_88 = '\0';" (assignment_expression "local_88 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) })) }))))) }))) (expression_statement "bVar11 = local_68;" (assignment_expression "bVar11 = local_68" identifier = identifier) ;) (expression_statement "local_7c = 1;" (assignment_expression "local_7c = 1" identifier = number_literal) ;) (expression_statement "uVar2 = local_7c;" (assignment_expression "uVar2 = local_7c" identifier = identifier) ;) (expression_statement "local_7c = 1;" (assignment_expression "local_7c = 1" identifier = number_literal) ;) (if_statement "if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;" if (parenthesized_expression "((local_68 != 0) && (local_64[0] == 0))" ( (binary_expression "(local_68 != 0) && (local_64[0] == 0)" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_64[0] == 0)" ( (binary_expression "local_64[0] == 0" (subscript_expression "local_64[0]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_001040e2;" goto statement_identifier ;)) (expression_statement "local_7c = uVar2;" (assignment_expression "local_7c = uVar2" identifier = identifier) ;) (if_statement "if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }" if (parenthesized_expression "(local_bc == '\0')" ( (binary_expression "local_bc == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }" { (if_statement "if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }" { (labeled_statement "LAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n              local_b0 = 1;\n              local_a8 = 0;\n            }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (if_statement "if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);" do (compound_statement "{\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (compound_statement "{\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" { (if_statement "if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 != 0) {\n                bVar1 = false;\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                bVar1 = false;\n              }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) })) }))))) }) (else_clause "else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" else (compound_statement "{\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_b8 >> 5)" ( (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_b8 & 0x1f)" ( (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }" { (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (goto_statement "goto LAB_00103db9;" goto statement_identifier ;) })) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) }))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" if (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" ( (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_a4[0] == 0)" ( (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_b8 = local_b8 + local_b0;" (assignment_expression "local_b8 = local_b8 + local_b0" identifier = (binary_expression "local_b8 + local_b0" identifier + identifier)) ;) (expression_statement "local_78 = local_78 + local_70;" (assignment_expression "local_78 = local_78 + local_70" identifier = (binary_expression "local_78 + local_70" identifier + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" if (parenthesized_expression "(param_1 < pbVar5)" ( (binary_expression "param_1 < pbVar5" identifier < identifier) )) (compound_statement "{\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }" { (expression_statement "ppuVar7 = __ctype_b_loc();" (assignment_expression "ppuVar7 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;" (assignment_expression "bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1" identifier = (binary_expression "((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1)" ( (binary_expression "(byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1" (call_expression "(byte)((*ppuVar7)[pbVar5[-1]] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar7)[pbVar5[-1]] >> 3)" ( (binary_expression "(*ppuVar7)[pbVar5[-1]] >> 3" (subscript_expression "(*ppuVar7)[pbVar5[-1]]" (parenthesized_expression "(*ppuVar7)" ( (pointer_expression "*ppuVar7" * identifier) )) [ (subscript_expression "pbVar5[-1]" identifier [ number_literal ]) ]) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar11 = *pbVar10;" (assignment_expression "bVar11 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "bVar11 = pbVar5[~uVar8 - 1];" (assignment_expression "bVar11 = pbVar5[~uVar8 - 1]" identifier = (subscript_expression "pbVar5[~uVar8 - 1]" identifier [ (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal) ])) ;) (expression_statement "bVar9 = 1;" (assignment_expression "bVar9 = 1" identifier = number_literal) ;) (if_statement "if (bVar11 != 0) goto LAB_001044ac;" if (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001044ac;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" else (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "bVar11 = pbVar5[~uVar8 - 1];" (assignment_expression "bVar11 = pbVar5[~uVar8 - 1]" identifier = (subscript_expression "pbVar5[~uVar8 - 1]" identifier [ (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal) ])) ;) (if_statement "if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        bVar12 = 1;\n        goto LAB_00104442;\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104442;" goto statement_identifier ;) })) (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001044ac:\n      ppuVar7 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar7 = __ctype_b_loc();" (assignment_expression "ppuVar7 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (expression_statement "bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;" (assignment_expression "bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1" identifier = (binary_expression "((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar7)[bVar11] >> 3) ^ 1)" ( (binary_expression "(byte)((*ppuVar7)[bVar11] >> 3) ^ 1" (call_expression "(byte)((*ppuVar7)[bVar11] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar7)[bVar11] >> 3)" ( (binary_expression "(*ppuVar7)[bVar11] >> 3" (subscript_expression "(*ppuVar7)[bVar11]" (parenthesized_expression "(*ppuVar7)" ( (pointer_expression "*ppuVar7" * identifier) )) [ identifier ]) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) }))) (expression_statement "bVar12 = bVar12 & bVar9;" (assignment_expression "bVar12 = bVar12 & bVar9" identifier = (binary_expression "bVar12 & bVar9" identifier & identifier)) ;) (if_statement "if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;" if (parenthesized_expression "((bVar12 != 0) || (*pbVar5 == 0))" ( (binary_expression "(bVar12 != 0) || (*pbVar5 == 0)" (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) || (parenthesized_expression "(*pbVar5 == 0)" ( (binary_expression "*pbVar5 == 0" (pointer_expression "*pbVar5" * identifier) == number_literal) ))) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "param_1 = pbVar5 + 1;" (assignment_expression "param_1 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;" statement_identifier : (if_statement "if (local_bc != '\0') goto LAB_0010412c;" if (parenthesized_expression "(local_bc != '\0')" ( (binary_expression "local_bc != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0010412c;" goto statement_identifier ;))) (if_statement "if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }" { (labeled_statement "LAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n      local_b0 = 1;\n      local_a8 = 0;\n    }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (if_statement "if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (compound_statement "{\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" { (if_statement "if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "mbsinit(&local_c4);" (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) ))) ;) }))))) }) (else_clause "else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" else (compound_statement "{\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_b8 >> 5)" ( (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_b8 & 0x1f)" ( (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }" { (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (goto_statement "goto LAB_001041e7;" goto statement_identifier ;) })) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) }))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (labeled_statement "LAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" statement_identifier : (if_statement "if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" if (parenthesized_expression "(((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     )" ( (binary_expression "((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)" (parenthesized_expression "((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0))" ( (binary_expression "(local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)" (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar12 = local_a8, local_a4[0] != 0)" ( (comma_expression "bVar12 = local_a8, local_a4[0] != 0" (assignment_expression "bVar12 = local_a8" identifier = identifier) , (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal)) ))) )) && (parenthesized_expression "(bVar12 = bVar11, local_a8 != 0)" ( (comma_expression "bVar12 = bVar11, local_a8 != 0" (assignment_expression "bVar12 = bVar11" identifier = identifier) , (binary_expression "local_a8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" { (expression_statement "iVar3 = iswalnum(local_a4[0]);" (assignment_expression "iVar3 = iswalnum(local_a4[0])" identifier = (call_expression "iswalnum(local_a4[0])" identifier (argument_list "(local_a4[0])" ( (subscript_expression "local_a4[0]" identifier [ number_literal ]) )))) ;) (expression_statement "bVar12 = iVar3 == 0;" (assignment_expression "bVar12 = iVar3 == 0" identifier = (binary_expression "iVar3 == 0" identifier == number_literal)) ;) }))) (expression_statement "bVar12 = local_c9 & bVar12;" (assignment_expression "bVar12 = local_c9 & bVar12" identifier = (binary_expression "local_c9 & bVar12" identifier & identifier)) ;) (if_statement "if (bVar12 != 0) goto LAB_00104442;" if (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*pbVar5 >> 5) * 4" (call_expression "(ulong)(*pbVar5 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pbVar5 >> 5)" ( (binary_expression "*pbVar5 >> 5" (pointer_expression "*pbVar5" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar5 & 0x1f)" ( (binary_expression "*pbVar5 & 0x1f" (pointer_expression "*pbVar5" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }" { (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" identifier = identifier) ;) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n      local_b0 = 1;\n      local_a8 = 0;\n    }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (if_statement "if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar11 = *pbVar10;" (assignment_expression "bVar11 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (compound_statement "{\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" { (if_statement "if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "mbsinit(&local_c4);" (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) ))) ;) }))))) }) (else_clause "else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" else (compound_statement "{\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*pbVar5;" (assignment_expression "local_a4[0] = (wint_t)(char)*pbVar5" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*pbVar5" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" identifier = identifier) ;) }))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;" if (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" ( (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_a4[0] == 0)" ( (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "param_1 = pbVar5 + local_b0;" (assignment_expression "param_1 = pbVar5 + local_b0" identifier = (binary_expression "pbVar5 + local_b0" identifier + identifier)) ;) (goto_statement "goto LAB_001044df;" goto statement_identifier ;) })))
(translation_unit "_Bool mbsstr_trimmed_wordbounded(char *string,char *sub)\n\n{\n  mbstate_t_conflict *pmVar1;\n  char cVar2;\n  long lVar3;\n  _Bool _Var4;\n  int iVar5;\n  char *needle;\n  size_t sVar6;\n  byte *pbVar7;\n  size_t sVar8;\n  ushort **ppuVar9;\n  ulong uVar10;\n  byte bVar11;\n  byte bVar12;\n  char *pcVar13;\n  _Bool _Var14;\n  long in_FS_OFFSET;\n  byte bVar16;\n  bool local_c9;\n  mbui_iterator_t string_iter;\n  mbui_iterator_t tsub_iter;\n  byte bVar15;\n  \n  bVar16 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  needle = trim2(sub,L'\x02');\nLAB_001044df:\n  do {\n    if (*string == 0) {\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar7 = (byte *)mbsstr(string,needle);\n    if (pbVar7 == (byte *)0x0) {\n      _Var14 = false;\n      goto LAB_00104442;\n    }\n    sVar8 = __ctype_get_mb_cur_max();\n    if (1 < sVar8) {\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }\n    if (string < pbVar7) {\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }\n    _Var14 = (_Bool)(bVar15 & bVar12);\n    if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;\n    string = (char *)(pbVar7 + 1);\n  } while( true );\nLAB_001040e2:\n  if (string_iter.next_done != false) goto LAB_0010412c;\n  if (string_iter.in_shift == false) {\n    if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      string_iter.in_shift = true;\n      goto LAB_001041e7;\n    }\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n    string_iter.cur.wc_valid = true;\n  }\n  else {\nLAB_001041e7:\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }\n  string_iter.next_done = true;\nLAB_0010412c:\n  if (((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&\n     (bVar11 = _Var4, string_iter.cur.wc_valid != false)) {\n    iVar5 = iswalnum(string_iter.cur.wc);\n    bVar11 = iVar5 == 0;\n  }\n  _Var14 = (_Bool)(local_c9 & bVar11);\n  if (_Var14 != false) goto LAB_00104442;\n  string_iter.in_shift = false;\n  string_iter.state.__count = L'\0';\n  string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n  string_iter.next_done = false;\n  if ((*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1) == 0) {\n    string_iter.cur.ptr = (char *)pbVar7;\n    iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    string_iter.in_shift = true;\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }\n  else {\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)(char)*pbVar7;\n    string_iter.cur.wc_valid = true;\n    string_iter.cur.ptr = (char *)pbVar7;\n  }\n  string_iter.next_done = true;\n  if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) goto LAB_00104442;\n  string = (char *)(pbVar7 + string_iter.cur.bytes);\n  goto LAB_001044df;\n}\n\n" (function_definition "_Bool mbsstr_trimmed_wordbounded(char *string,char *sub)\n\n{\n  mbstate_t_conflict *pmVar1;\n  char cVar2;\n  long lVar3;\n  _Bool _Var4;\n  int iVar5;\n  char *needle;\n  size_t sVar6;\n  byte *pbVar7;\n  size_t sVar8;\n  ushort **ppuVar9;\n  ulong uVar10;\n  byte bVar11;\n  byte bVar12;\n  char *pcVar13;\n  _Bool _Var14;\n  long in_FS_OFFSET;\n  byte bVar16;\n  bool local_c9;\n  mbui_iterator_t string_iter;\n  mbui_iterator_t tsub_iter;\n  byte bVar15;\n  \n  bVar16 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  needle = trim2(sub,L'\x02');\nLAB_001044df:\n  do {\n    if (*string == 0) {\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar7 = (byte *)mbsstr(string,needle);\n    if (pbVar7 == (byte *)0x0) {\n      _Var14 = false;\n      goto LAB_00104442;\n    }\n    sVar8 = __ctype_get_mb_cur_max();\n    if (1 < sVar8) {\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }\n    if (string < pbVar7) {\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }\n    _Var14 = (_Bool)(bVar15 & bVar12);\n    if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;\n    string = (char *)(pbVar7 + 1);\n  } while( true );\nLAB_001040e2:\n  if (string_iter.next_done != false) goto LAB_0010412c;\n  if (string_iter.in_shift == false) {\n    if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      string_iter.in_shift = true;\n      goto LAB_001041e7;\n    }\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n    string_iter.cur.wc_valid = true;\n  }\n  else {\nLAB_001041e7:\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }\n  string_iter.next_done = true;\nLAB_0010412c:\n  if (((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&\n     (bVar11 = _Var4, string_iter.cur.wc_valid != false)) {\n    iVar5 = iswalnum(string_iter.cur.wc);\n    bVar11 = iVar5 == 0;\n  }\n  _Var14 = (_Bool)(local_c9 & bVar11);\n  if (_Var14 != false) goto LAB_00104442;\n  string_iter.in_shift = false;\n  string_iter.state.__count = L'\0';\n  string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n  string_iter.next_done = false;\n  if ((*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1) == 0) {\n    string_iter.cur.ptr = (char *)pbVar7;\n    iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    string_iter.in_shift = true;\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }\n  else {\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)(char)*pbVar7;\n    string_iter.cur.wc_valid = true;\n    string_iter.cur.ptr = (char *)pbVar7;\n  }\n  string_iter.next_done = true;\n  if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) goto LAB_00104442;\n  string = (char *)(pbVar7 + string_iter.cur.bytes);\n  goto LAB_001044df;\n}" type_identifier (function_declarator "mbsstr_trimmed_wordbounded(char *string,char *sub)" identifier (parameter_list "(char *string,char *sub)" ( (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "char *sub" primitive_type (pointer_declarator "*sub" * identifier)) ))) (compound_statement "{\n  mbstate_t_conflict *pmVar1;\n  char cVar2;\n  long lVar3;\n  _Bool _Var4;\n  int iVar5;\n  char *needle;\n  size_t sVar6;\n  byte *pbVar7;\n  size_t sVar8;\n  ushort **ppuVar9;\n  ulong uVar10;\n  byte bVar11;\n  byte bVar12;\n  char *pcVar13;\n  _Bool _Var14;\n  long in_FS_OFFSET;\n  byte bVar16;\n  bool local_c9;\n  mbui_iterator_t string_iter;\n  mbui_iterator_t tsub_iter;\n  byte bVar15;\n  \n  bVar16 = 0;\n  lVar3 = *(long *)(in_FS_OFFSET + 0x28);\n  needle = trim2(sub,L'\x02');\nLAB_001044df:\n  do {\n    if (*string == 0) {\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar7 = (byte *)mbsstr(string,needle);\n    if (pbVar7 == (byte *)0x0) {\n      _Var14 = false;\n      goto LAB_00104442;\n    }\n    sVar8 = __ctype_get_mb_cur_max();\n    if (1 < sVar8) {\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }\n    if (string < pbVar7) {\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }\n    _Var14 = (_Bool)(bVar15 & bVar12);\n    if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;\n    string = (char *)(pbVar7 + 1);\n  } while( true );\nLAB_001040e2:\n  if (string_iter.next_done != false) goto LAB_0010412c;\n  if (string_iter.in_shift == false) {\n    if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      string_iter.in_shift = true;\n      goto LAB_001041e7;\n    }\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n    string_iter.cur.wc_valid = true;\n  }\n  else {\nLAB_001041e7:\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }\n  string_iter.next_done = true;\nLAB_0010412c:\n  if (((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&\n     (bVar11 = _Var4, string_iter.cur.wc_valid != false)) {\n    iVar5 = iswalnum(string_iter.cur.wc);\n    bVar11 = iVar5 == 0;\n  }\n  _Var14 = (_Bool)(local_c9 & bVar11);\n  if (_Var14 != false) goto LAB_00104442;\n  string_iter.in_shift = false;\n  string_iter.state.__count = L'\0';\n  string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n  string_iter.next_done = false;\n  if ((*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1) == 0) {\n    string_iter.cur.ptr = (char *)pbVar7;\n    iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    string_iter.in_shift = true;\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }\n  else {\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)(char)*pbVar7;\n    string_iter.cur.wc_valid = true;\n    string_iter.cur.ptr = (char *)pbVar7;\n  }\n  string_iter.next_done = true;\n  if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) goto LAB_00104442;\n  string = (char *)(pbVar7 + string_iter.cur.bytes);\n  goto LAB_001044df;\n}" { (declaration "mbstate_t_conflict *pmVar1;" type_identifier (pointer_declarator "*pmVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "_Bool _Var4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *needle;" primitive_type (pointer_declarator "*needle" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "ushort **ppuVar9;" type_identifier (pointer_declarator "**ppuVar9" * (pointer_declarator "*ppuVar9" * identifier)) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "_Bool _Var14;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "bool local_c9;" primitive_type identifier ;) (declaration "mbui_iterator_t string_iter;" type_identifier identifier ;) (declaration "mbui_iterator_t tsub_iter;" type_identifier identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "lVar3 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar3 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "needle = trim2(sub,L'\x02');" (assignment_expression "needle = trim2(sub,L'\x02')" identifier = (call_expression "trim2(sub,L'\x02')" identifier (argument_list "(sub,L'\x02')" ( identifier , (char_literal "L'\x02'" L' escape_sequence ') )))) ;) (labeled_statement "LAB_001044df:\n  do {\n    if (*string == 0) {\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar7 = (byte *)mbsstr(string,needle);\n    if (pbVar7 == (byte *)0x0) {\n      _Var14 = false;\n      goto LAB_00104442;\n    }\n    sVar8 = __ctype_get_mb_cur_max();\n    if (1 < sVar8) {\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }\n    if (string < pbVar7) {\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }\n    _Var14 = (_Bool)(bVar15 & bVar12);\n    if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;\n    string = (char *)(pbVar7 + 1);\n  } while( true );" statement_identifier : (do_statement "do {\n    if (*string == 0) {\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar7 = (byte *)mbsstr(string,needle);\n    if (pbVar7 == (byte *)0x0) {\n      _Var14 = false;\n      goto LAB_00104442;\n    }\n    sVar8 = __ctype_get_mb_cur_max();\n    if (1 < sVar8) {\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }\n    if (string < pbVar7) {\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }\n    _Var14 = (_Bool)(bVar15 & bVar12);\n    if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;\n    string = (char *)(pbVar7 + 1);\n  } while( true );" do (compound_statement "{\n    if (*string == 0) {\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }\n    pbVar7 = (byte *)mbsstr(string,needle);\n    if (pbVar7 == (byte *)0x0) {\n      _Var14 = false;\n      goto LAB_00104442;\n    }\n    sVar8 = __ctype_get_mb_cur_max();\n    if (1 < sVar8) {\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }\n    if (string < pbVar7) {\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }\n    _Var14 = (_Bool)(bVar15 & bVar12);\n    if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;\n    string = (char *)(pbVar7 + 1);\n  }" { (if_statement "if (*string == 0) {\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" if (parenthesized_expression "(*string == 0)" ( (binary_expression "*string == 0" (pointer_expression "*string" * identifier) == number_literal) )) (compound_statement "{\n      _Var14 = false;\nLAB_00104442:\n      free(needle);\n      if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }\n                    /* WARNING: Subroutine does not return */\n      __stack_chk_fail();\n    }" { (expression_statement "_Var14 = false;" (assignment_expression "_Var14 = false" identifier = false) ;) (labeled_statement "LAB_00104442:\n      free(needle);" statement_identifier : (expression_statement "free(needle);" (call_expression "free(needle)" identifier (argument_list "(needle)" ( identifier ))) ;)) (if_statement "if (lVar3 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return _Var14;\n      }" if (parenthesized_expression "(lVar3 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar3 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n        return _Var14;\n      }" { (return_statement "return _Var14;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "pbVar7 = (byte *)mbsstr(string,needle);" (assignment_expression "pbVar7 = (byte *)mbsstr(string,needle)" identifier = (cast_expression "(byte *)mbsstr(string,needle)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "mbsstr(string,needle)" identifier (argument_list "(string,needle)" ( identifier , identifier ))))) ;) (if_statement "if (pbVar7 == (byte *)0x0) {\n      _Var14 = false;\n      goto LAB_00104442;\n    }" if (parenthesized_expression "(pbVar7 == (byte *)0x0)" ( (binary_expression "pbVar7 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      _Var14 = false;\n      goto LAB_00104442;\n    }" { (expression_statement "_Var14 = false;" (assignment_expression "_Var14 = false" identifier = false) ;) (goto_statement "goto LAB_00104442;" goto statement_identifier ;) })) (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (if_statement "if (1 < sVar8) {\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }" if (parenthesized_expression "(1 < sVar8)" ( (binary_expression "1 < sVar8" number_literal < identifier) )) (compound_statement "{\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      string_iter.in_shift = false;\n      string_iter.state.__count = L'\0';\n      string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      tsub_iter.in_shift = false;\n      tsub_iter.state.__count = L'\0';\n      tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n      pmVar1 = &tsub_iter.state;\n      string_iter.cur.ptr = (char *)pbVar7;\n      tsub_iter.cur.ptr = needle;\n      do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );\n    }" { (expression_statement "string_iter.in_shift = false;" (assignment_expression "string_iter.in_shift = false" (field_expression "string_iter.in_shift" identifier . field_identifier) = false) ;) (expression_statement "string_iter.state.__count = L'\0';" (assignment_expression "string_iter.state.__count = L'\0'" (field_expression "string_iter.state.__count" (field_expression "string_iter.state" identifier . field_identifier) . field_identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;" (assignment_expression "string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0" (field_expression "string_iter.state.__value" (field_expression "string_iter.state" identifier . field_identifier) . field_identifier) = (cast_expression "(anon_union_4_2_91654ee9_for___value)0x0" ( (type_descriptor "anon_union_4_2_91654ee9_for___value" type_identifier) ) number_literal)) ;) (if_statement "if (string < pbVar7) {\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }" if (parenthesized_expression "(string < pbVar7)" ( (binary_expression "string < pbVar7" identifier < identifier) )) (compound_statement "{\n        pmVar1 = &string_iter.state;\n        string_iter.cur.ptr = string;\n        do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);\n        local_c9 = true;\n        if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }\n      }" { (expression_statement "pmVar1 = &string_iter.state;" (assignment_expression "pmVar1 = &string_iter.state" identifier = (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier))) ;) (expression_statement "string_iter.cur.ptr = string;" (assignment_expression "string_iter.cur.ptr = string" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = identifier) ;) (do_statement "do {\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        } while (string_iter.cur.ptr < pbVar7);" do (compound_statement "{\n          string_iter.next_done = false;\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }\n          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n          string_iter.next_done = false;\n        }" { (expression_statement "string_iter.next_done = false;" (assignment_expression "string_iter.next_done = false" (field_expression "string_iter.next_done" identifier . field_identifier) = false) ;) (if_statement "if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }" if (parenthesized_expression "(string_iter.in_shift == false)" ( (binary_expression "string_iter.in_shift == false" (field_expression "string_iter.in_shift" identifier . field_identifier) == false) )) (compound_statement "{\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }" { (if_statement "if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU)" (pointer_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4" identifier + (binary_expression "(ulong)((byte)*string_iter.cur.ptr >> 5) * 4" (call_expression "(ulong)((byte)*string_iter.cur.ptr >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((byte)*string_iter.cur.ptr >> 5)" ( (binary_expression "(byte)*string_iter.cur.ptr >> 5" (binary_expression "(byte)*string_iter.cur.ptr" (parenthesized_expression "(byte)" ( identifier )) * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*string_iter.cur.ptr & 0x1fU)" ( (binary_expression "*string_iter.cur.ptr & 0x1fU" (pointer_expression "*string_iter.cur.ptr" * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103ba8;\n            }" { (expression_statement "iVar5 = mbsinit((mbstate_t *)pmVar1);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)pmVar1)" identifier = (call_expression "mbsinit((mbstate_t *)pmVar1)" identifier (argument_list "((mbstate_t *)pmVar1)" ( (cast_expression "(mbstate_t *)pmVar1" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "string_iter.in_shift = true;" (assignment_expression "string_iter.in_shift = true" (field_expression "string_iter.in_shift" identifier . field_identifier) = true) ;) (goto_statement "goto LAB_00103ba8;" goto statement_identifier ;) })) (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;" (assignment_expression "string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "(wchar_t)*string_iter.cur.ptr" (parenthesized_expression "(wchar_t)" ( identifier )) * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier))) ;) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) }) (else_clause "else {\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }" { (labeled_statement "LAB_00103ba8:\n            sVar8 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (expression_statement "sVar6 = strnlen1(string_iter.cur.ptr,sVar8);" (assignment_expression "sVar6 = strnlen1(string_iter.cur.ptr,sVar8)" identifier = (call_expression "strnlen1(string_iter.cur.ptr,sVar8)" identifier (argument_list "(string_iter.cur.ptr,sVar8)" ( (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) , identifier )))) ;) (expression_statement "string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1);" (assignment_expression "string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1)" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (call_expression "rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,pmVar1)" identifier (argument_list "(&string_iter.cur.wc,pcVar13,sVar6,pmVar1)" ( (pointer_expression "&string_iter.cur.wc" & (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) , identifier , identifier , identifier )))) ;) (if_statement "if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" if (parenthesized_expression "(string_iter.cur.bytes == 0xffffffffffffffff)" ( (binary_expression "string_iter.cur.bytes == 0xffffffffffffffff" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" else (if_statement "if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" if (parenthesized_expression "(string_iter.cur.bytes == 0xfffffffffffffffe)" ( (binary_expression "string_iter.cur.bytes == 0xfffffffffffffffe" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }" { (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (do_statement "do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');" do (compound_statement "{\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar16 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "string_iter.cur.bytes = ~uVar10 - 1;" (assignment_expression "string_iter.cur.bytes = ~uVar10 - 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal)) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" else (compound_statement "{\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)pmVar1);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" { (if_statement "if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" if (parenthesized_expression "(string_iter.cur.bytes == 0)" ( (binary_expression "string_iter.cur.bytes == 0" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(*string_iter.cur.ptr != '\0')" ( (binary_expression "*string_iter.cur.ptr != '\0'" (pointer_expression "*string_iter.cur.ptr" * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(string_iter.cur.wc != L'\0')" ( (binary_expression "string_iter.cur.wc != L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) (expression_statement "iVar5 = mbsinit((mbstate_t *)pmVar1);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)pmVar1)" identifier = (call_expression "mbsinit((mbstate_t *)pmVar1)" identifier (argument_list "((mbstate_t *)pmVar1)" ( (cast_expression "(mbstate_t *)pmVar1" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                string_iter.in_shift = false;\n              }" { (expression_statement "string_iter.in_shift = false;" (assignment_expression "string_iter.in_shift = false" (field_expression "string_iter.in_shift" identifier . field_identifier) = false) ;) })) }))))) }))) (expression_statement "string_iter.next_done = true;" (assignment_expression "string_iter.next_done = true" (field_expression "string_iter.next_done" identifier . field_identifier) = true) ;) (if_statement "if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" if (parenthesized_expression "((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0'))" ( (binary_expression "(string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')" (parenthesized_expression "(string_iter.cur.wc_valid != false)" ( (binary_expression "string_iter.cur.wc_valid != false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != false) )) && (parenthesized_expression "(string_iter.cur.wc == L'\0')" ( (binary_expression "string_iter.cur.wc == L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == (char_literal "L'\0'" L' escape_sequence ')) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n            abort();\n          }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;" (assignment_expression "string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "string_iter.cur.ptr + string_iter.cur.bytes" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) + (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier))) ;) (expression_statement "string_iter.next_done = false;" (assignment_expression "string_iter.next_done = false" (field_expression "string_iter.next_done" identifier . field_identifier) = false) ;) }) while (parenthesized_expression "(string_iter.cur.ptr < pbVar7)" ( (binary_expression "string_iter.cur.ptr < pbVar7" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) < identifier) )) ;) (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" identifier = true) ;) (if_statement "if (string_iter.cur.wc_valid != false) {\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }" if (parenthesized_expression "(string_iter.cur.wc_valid != false)" ( (binary_expression "string_iter.cur.wc_valid != false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != false) )) (compound_statement "{\n          iVar5 = iswalnum(string_iter.cur.wc);\n          local_c9 = iVar5 == 0;\n        }" { (expression_statement "iVar5 = iswalnum(string_iter.cur.wc);" (assignment_expression "iVar5 = iswalnum(string_iter.cur.wc)" identifier = (call_expression "iswalnum(string_iter.cur.wc)" identifier (argument_list "(string_iter.cur.wc)" ( (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) )))) ;) (expression_statement "local_c9 = iVar5 == 0;" (assignment_expression "local_c9 = iVar5 == 0" identifier = (binary_expression "iVar5 == 0" identifier == number_literal)) ;) })) }) (else_clause "else {\n        local_c9 = true;\n      }" else (compound_statement "{\n        local_c9 = true;\n      }" { (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" identifier = true) ;) }))) (expression_statement "string_iter.in_shift = false;" (assignment_expression "string_iter.in_shift = false" (field_expression "string_iter.in_shift" identifier . field_identifier) = false) ;) (expression_statement "string_iter.state.__count = L'\0';" (assignment_expression "string_iter.state.__count = L'\0'" (field_expression "string_iter.state.__count" (field_expression "string_iter.state" identifier . field_identifier) . field_identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;" (assignment_expression "string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0" (field_expression "string_iter.state.__value" (field_expression "string_iter.state" identifier . field_identifier) . field_identifier) = (cast_expression "(anon_union_4_2_91654ee9_for___value)0x0" ( (type_descriptor "anon_union_4_2_91654ee9_for___value" type_identifier) ) number_literal)) ;) (expression_statement "tsub_iter.in_shift = false;" (assignment_expression "tsub_iter.in_shift = false" (field_expression "tsub_iter.in_shift" identifier . field_identifier) = false) ;) (expression_statement "tsub_iter.state.__count = L'\0';" (assignment_expression "tsub_iter.state.__count = L'\0'" (field_expression "tsub_iter.state.__count" (field_expression "tsub_iter.state" identifier . field_identifier) . field_identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;" (assignment_expression "tsub_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0" (field_expression "tsub_iter.state.__value" (field_expression "tsub_iter.state" identifier . field_identifier) . field_identifier) = (cast_expression "(anon_union_4_2_91654ee9_for___value)0x0" ( (type_descriptor "anon_union_4_2_91654ee9_for___value" type_identifier) ) number_literal)) ;) (expression_statement "pmVar1 = &tsub_iter.state;" (assignment_expression "pmVar1 = &tsub_iter.state" identifier = (pointer_expression "&tsub_iter.state" & (field_expression "tsub_iter.state" identifier . field_identifier))) ;) (expression_statement "string_iter.cur.ptr = (char *)pbVar7;" (assignment_expression "string_iter.cur.ptr = (char *)pbVar7" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (cast_expression "(char *)pbVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "tsub_iter.cur.ptr = needle;" (assignment_expression "tsub_iter.cur.ptr = needle" (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = identifier) ;) (do_statement "do {\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      } while( true );" do (compound_statement "{\n        tsub_iter.next_done = false;\n        string_iter.next_done = false;\n        if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }\n        _Var4 = tsub_iter.cur.wc_valid;\n        tsub_iter.next_done = true;\n        _Var14 = tsub_iter.next_done;\n        tsub_iter.next_done = true;\n        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;\n        tsub_iter.next_done = _Var14;\n        if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }\n        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;\n        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;\n      }" { (expression_statement "tsub_iter.next_done = false;" (assignment_expression "tsub_iter.next_done = false" (field_expression "tsub_iter.next_done" identifier . field_identifier) = false) ;) (expression_statement "string_iter.next_done = false;" (assignment_expression "string_iter.next_done = false" (field_expression "string_iter.next_done" identifier . field_identifier) = false) ;) (if_statement "if (tsub_iter.in_shift == false) {\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }\n        else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }" if (parenthesized_expression "(tsub_iter.in_shift == false)" ( (binary_expression "tsub_iter.in_shift == false" (field_expression "tsub_iter.in_shift" identifier . field_identifier) == false) )) (compound_statement "{\n          if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }\n          tsub_iter.cur.bytes = 1;\n          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;\n          tsub_iter.cur.wc_valid = true;\n        }" { (if_statement "if ((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4) >>\n               (*tsub_iter.cur.ptr & 0x1fU)" (pointer_expression "*(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4" identifier + (binary_expression "(ulong)((byte)*tsub_iter.cur.ptr >> 5) * 4" (call_expression "(ulong)((byte)*tsub_iter.cur.ptr >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((byte)*tsub_iter.cur.ptr >> 5)" ( (binary_expression "(byte)*tsub_iter.cur.ptr >> 5" (binary_expression "(byte)*tsub_iter.cur.ptr" (parenthesized_expression "(byte)" ( identifier )) * (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier)) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*tsub_iter.cur.ptr & 0x1fU)" ( (binary_expression "*tsub_iter.cur.ptr & 0x1fU" (pointer_expression "*tsub_iter.cur.ptr" * (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier)) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            tsub_iter.in_shift = true;\n            goto LAB_00103fc8;\n          }" { (expression_statement "iVar5 = mbsinit((mbstate_t *)pmVar1);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)pmVar1)" identifier = (call_expression "mbsinit((mbstate_t *)pmVar1)" identifier (argument_list "((mbstate_t *)pmVar1)" ( (cast_expression "(mbstate_t *)pmVar1" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "tsub_iter.in_shift = true;" (assignment_expression "tsub_iter.in_shift = true" (field_expression "tsub_iter.in_shift" identifier . field_identifier) = true) ;) (goto_statement "goto LAB_00103fc8;" goto statement_identifier ;) })) (expression_statement "tsub_iter.cur.bytes = 1;" (assignment_expression "tsub_iter.cur.bytes = 1" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;" (assignment_expression "tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr" (field_expression "tsub_iter.cur.wc" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "(wchar_t)*tsub_iter.cur.ptr" (parenthesized_expression "(wchar_t)" ( identifier )) * (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier))) ;) (expression_statement "tsub_iter.cur.wc_valid = true;" (assignment_expression "tsub_iter.cur.wc_valid = true" (field_expression "tsub_iter.cur.wc_valid" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) }) (else_clause "else {\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }" else (compound_statement "{\nLAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();\n          pcVar13 = tsub_iter.cur.ptr;\n          sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);\n          tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);\n          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }\n        }" { (labeled_statement "LAB_00103fc8:\n          sVar8 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar13 = tsub_iter.cur.ptr;" (assignment_expression "pcVar13 = tsub_iter.cur.ptr" identifier = (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier)) ;) (expression_statement "sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8);" (assignment_expression "sVar6 = strnlen1(tsub_iter.cur.ptr,sVar8)" identifier = (call_expression "strnlen1(tsub_iter.cur.ptr,sVar8)" identifier (argument_list "(tsub_iter.cur.ptr,sVar8)" ( (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) , identifier )))) ;) (expression_statement "tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1);" (assignment_expression "tsub_iter.cur.bytes = rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1)" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = (call_expression "rpl_mbrtowc(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1)" identifier (argument_list "(&tsub_iter.cur.wc,pcVar13,sVar6,pmVar1)" ( (pointer_expression "&tsub_iter.cur.wc" & (field_expression "tsub_iter.cur.wc" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier)) , identifier , identifier , identifier )))) ;) (if_statement "if (tsub_iter.cur.bytes == 0xffffffffffffffff) {\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }" if (parenthesized_expression "(tsub_iter.cur.bytes == 0xffffffffffffffff)" ( (binary_expression "tsub_iter.cur.bytes == 0xffffffffffffffff" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n            tsub_iter.cur.bytes = 1;\n            tsub_iter.cur.wc_valid = false;\n          }" { (expression_statement "tsub_iter.cur.bytes = 1;" (assignment_expression "tsub_iter.cur.bytes = 1" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "tsub_iter.cur.wc_valid = false;" (assignment_expression "tsub_iter.cur.wc_valid = false" (field_expression "tsub_iter.cur.wc_valid" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }" else (if_statement "if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }\n          else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }" if (parenthesized_expression "(tsub_iter.cur.bytes == 0xfffffffffffffffe)" ( (binary_expression "tsub_iter.cur.bytes == 0xfffffffffffffffe" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n            uVar10 = 0xffffffffffffffff;\n            pcVar13 = tsub_iter.cur.ptr;\n            do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');\n            tsub_iter.cur.bytes = ~uVar10 - 1;\n            tsub_iter.cur.wc_valid = false;\n          }" { (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = tsub_iter.cur.ptr;" (assignment_expression "pcVar13 = tsub_iter.cur.ptr" identifier = (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier)) ;) (do_statement "do {\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            } while (cVar2 != '\0');" do (compound_statement "{\n              if (uVar10 == 0) break;\n              uVar10 = uVar10 - 1;\n              cVar2 = *pcVar13;\n              pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n            }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar16 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "tsub_iter.cur.bytes = ~uVar10 - 1;" (assignment_expression "tsub_iter.cur.bytes = ~uVar10 - 1" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal)) ;) (expression_statement "tsub_iter.cur.wc_valid = false;" (assignment_expression "tsub_iter.cur.wc_valid = false" (field_expression "tsub_iter.cur.wc_valid" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else {\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }" else (compound_statement "{\n            if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            tsub_iter.cur.wc_valid = true;\n            iVar5 = mbsinit((mbstate_t *)pmVar1);\n            if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }\n          }" { (if_statement "if (tsub_iter.cur.bytes == 0) {\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" if (parenthesized_expression "(tsub_iter.cur.bytes == 0)" ( (binary_expression "tsub_iter.cur.bytes == 0" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n              tsub_iter.cur.bytes = 1;\n              if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" { (expression_statement "tsub_iter.cur.bytes = 1;" (assignment_expression "tsub_iter.cur.bytes = 1" (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (*tsub_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(*tsub_iter.cur.ptr != '\0')" ( (binary_expression "*tsub_iter.cur.ptr != '\0'" (pointer_expression "*tsub_iter.cur.ptr" * (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (tsub_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(tsub_iter.cur.wc != L'\0')" ( (binary_expression "tsub_iter.cur.wc != L'\0'" (field_expression "tsub_iter.cur.wc" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) != (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "tsub_iter.cur.wc_valid = true;" (assignment_expression "tsub_iter.cur.wc_valid = true" (field_expression "tsub_iter.cur.wc_valid" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) (expression_statement "iVar5 = mbsinit((mbstate_t *)pmVar1);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)pmVar1)" identifier = (call_expression "mbsinit((mbstate_t *)pmVar1)" identifier (argument_list "((mbstate_t *)pmVar1)" ( (cast_expression "(mbstate_t *)pmVar1" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar5 != 0) {\n              tsub_iter.in_shift = false;\n            }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              tsub_iter.in_shift = false;\n            }" { (expression_statement "tsub_iter.in_shift = false;" (assignment_expression "tsub_iter.in_shift = false" (field_expression "tsub_iter.in_shift" identifier . field_identifier) = false) ;) })) }))))) }))) (expression_statement "_Var4 = tsub_iter.cur.wc_valid;" (assignment_expression "_Var4 = tsub_iter.cur.wc_valid" identifier = (field_expression "tsub_iter.cur.wc_valid" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier)) ;) (expression_statement "tsub_iter.next_done = true;" (assignment_expression "tsub_iter.next_done = true" (field_expression "tsub_iter.next_done" identifier . field_identifier) = true) ;) (expression_statement "_Var14 = tsub_iter.next_done;" (assignment_expression "_Var14 = tsub_iter.next_done" identifier = (field_expression "tsub_iter.next_done" identifier . field_identifier)) ;) (expression_statement "tsub_iter.next_done = true;" (assignment_expression "tsub_iter.next_done = true" (field_expression "tsub_iter.next_done" identifier . field_identifier) = true) ;) (if_statement "if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;" if (parenthesized_expression "((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0'))" ( (binary_expression "(tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')" (parenthesized_expression "(tsub_iter.cur.wc_valid != false)" ( (binary_expression "tsub_iter.cur.wc_valid != false" (field_expression "tsub_iter.cur.wc_valid" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) != false) )) && (parenthesized_expression "(tsub_iter.cur.wc == L'\0')" ( (binary_expression "tsub_iter.cur.wc == L'\0'" (field_expression "tsub_iter.cur.wc" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) == (char_literal "L'\0'" L' escape_sequence ')) ))) )) (goto_statement "goto LAB_001040e2;" goto statement_identifier ;)) (expression_statement "tsub_iter.next_done = _Var14;" (assignment_expression "tsub_iter.next_done = _Var14" (field_expression "tsub_iter.next_done" identifier . field_identifier) = identifier) ;) (if_statement "if (string_iter.next_done == false) {\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }" if (parenthesized_expression "(string_iter.next_done == false)" ( (binary_expression "string_iter.next_done == false" (field_expression "string_iter.next_done" identifier . field_identifier) == false) )) (compound_statement "{\n          if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }\n          string_iter.next_done = true;\n        }" { (if_statement "if (string_iter.in_shift == false) {\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }\n          else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }" if (parenthesized_expression "(string_iter.in_shift == false)" ( (binary_expression "string_iter.in_shift == false" (field_expression "string_iter.in_shift" identifier . field_identifier) == false) )) (compound_statement "{\n            if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }\n            string_iter.cur.bytes = 1;\n            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n            string_iter.cur.wc_valid = true;\n          }" { (if_statement "if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n                 (*string_iter.cur.ptr & 0x1fU)" (pointer_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4" identifier + (binary_expression "(ulong)((byte)*string_iter.cur.ptr >> 5) * 4" (call_expression "(ulong)((byte)*string_iter.cur.ptr >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((byte)*string_iter.cur.ptr >> 5)" ( (binary_expression "(byte)*string_iter.cur.ptr >> 5" (binary_expression "(byte)*string_iter.cur.ptr" (parenthesized_expression "(byte)" ( identifier )) * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*string_iter.cur.ptr & 0x1fU)" ( (binary_expression "*string_iter.cur.ptr & 0x1fU" (pointer_expression "*string_iter.cur.ptr" * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              string_iter.in_shift = true;\n              goto LAB_00103db9;\n            }" { (expression_statement "iVar5 = mbsinit((mbstate_t *)&string_iter.state);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)&string_iter.state)" identifier = (call_expression "mbsinit((mbstate_t *)&string_iter.state)" identifier (argument_list "((mbstate_t *)&string_iter.state)" ( (cast_expression "(mbstate_t *)&string_iter.state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier))) )))) ;) (if_statement "if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "string_iter.in_shift = true;" (assignment_expression "string_iter.in_shift = true" (field_expression "string_iter.in_shift" identifier . field_identifier) = true) ;) (goto_statement "goto LAB_00103db9;" goto statement_identifier ;) })) (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;" (assignment_expression "string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "(wchar_t)*string_iter.cur.ptr" (parenthesized_expression "(wchar_t)" ( identifier )) * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier))) ;) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) }) (else_clause "else {\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();\n            pcVar13 = string_iter.cur.ptr;\n            sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n            string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n            if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }\n          }" { (labeled_statement "LAB_00103db9:\n            sVar8 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (expression_statement "sVar6 = strnlen1(string_iter.cur.ptr,sVar8);" (assignment_expression "sVar6 = strnlen1(string_iter.cur.ptr,sVar8)" identifier = (call_expression "strnlen1(string_iter.cur.ptr,sVar8)" identifier (argument_list "(string_iter.cur.ptr,sVar8)" ( (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) , identifier )))) ;) (expression_statement "string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);" (assignment_expression "string_iter.cur.bytes =\n                 rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (call_expression "rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" identifier (argument_list "(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" ( (pointer_expression "&string_iter.cur.wc" & (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) , identifier , identifier , (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier)) )))) ;) (if_statement "if (string_iter.cur.bytes == 0xffffffffffffffff) {\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" if (parenthesized_expression "(string_iter.cur.bytes == 0xffffffffffffffff)" ( (binary_expression "string_iter.cur.bytes == 0xffffffffffffffff" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n              string_iter.cur.bytes = 1;\n              string_iter.cur.wc_valid = false;\n            }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" else (if_statement "if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }\n            else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" if (parenthesized_expression "(string_iter.cur.bytes == 0xfffffffffffffffe)" ( (binary_expression "string_iter.cur.bytes == 0xfffffffffffffffe" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n              uVar10 = 0xffffffffffffffff;\n              pcVar13 = string_iter.cur.ptr;\n              do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');\n              string_iter.cur.bytes = ~uVar10 - 1;\n              string_iter.cur.wc_valid = false;\n            }" { (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (do_statement "do {\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              } while (cVar2 != '\0');" do (compound_statement "{\n                if (uVar10 == 0) break;\n                uVar10 = uVar10 - 1;\n                cVar2 = *pcVar13;\n                pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n              }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar16 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "string_iter.cur.bytes = ~uVar10 - 1;" (assignment_expression "string_iter.cur.bytes = ~uVar10 - 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal)) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else {\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" else (compound_statement "{\n              if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              string_iter.cur.wc_valid = true;\n              iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n              if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }\n            }" { (if_statement "if (string_iter.cur.bytes == 0) {\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" if (parenthesized_expression "(string_iter.cur.bytes == 0)" ( (binary_expression "string_iter.cur.bytes == 0" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n                string_iter.cur.bytes = 1;\n                if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(*string_iter.cur.ptr != '\0')" ( (binary_expression "*string_iter.cur.ptr != '\0'" (pointer_expression "*string_iter.cur.ptr" * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(string_iter.cur.wc != L'\0')" ( (binary_expression "string_iter.cur.wc != L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) (expression_statement "iVar5 = mbsinit((mbstate_t *)&string_iter.state);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)&string_iter.state)" identifier = (call_expression "mbsinit((mbstate_t *)&string_iter.state)" identifier (argument_list "((mbstate_t *)&string_iter.state)" ( (cast_expression "(mbstate_t *)&string_iter.state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier))) )))) ;) (if_statement "if (iVar5 != 0) {\n                string_iter.in_shift = false;\n              }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n                string_iter.in_shift = false;\n              }" { (expression_statement "string_iter.in_shift = false;" (assignment_expression "string_iter.in_shift = false" (field_expression "string_iter.in_shift" identifier . field_identifier) = false) ;) })) }))))) }))) (expression_statement "string_iter.next_done = true;" (assignment_expression "string_iter.next_done = true" (field_expression "string_iter.next_done" identifier . field_identifier) = true) ;) })) (if_statement "if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" if (parenthesized_expression "((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0'))" ( (binary_expression "(string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')" (parenthesized_expression "(string_iter.cur.wc_valid != false)" ( (binary_expression "string_iter.cur.wc_valid != false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != false) )) && (parenthesized_expression "(string_iter.cur.wc == L'\0')" ( (binary_expression "string_iter.cur.wc == L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == (char_literal "L'\0'" L' escape_sequence ')) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;" (assignment_expression "string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "string_iter.cur.ptr + string_iter.cur.bytes" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) + (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier))) ;) (expression_statement "tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;" (assignment_expression "tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes" (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "tsub_iter.cur.ptr + tsub_iter.cur.bytes" (field_expression "tsub_iter.cur.ptr" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier) + (field_expression "tsub_iter.cur.bytes" (field_expression "tsub_iter.cur" identifier . field_identifier) . field_identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (string < pbVar7) {\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }" if (parenthesized_expression "(string < pbVar7)" ( (binary_expression "string < pbVar7" identifier < identifier) )) (compound_statement "{\n      ppuVar9 = __ctype_b_loc();\n      bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      bVar12 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }" { (expression_statement "ppuVar9 = __ctype_b_loc();" (assignment_expression "ppuVar9 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1;" (assignment_expression "bVar15 = ((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1" identifier = (binary_expression "((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1)" ( (binary_expression "(byte)((*ppuVar9)[pbVar7[-1]] >> 3) ^ 1" (call_expression "(byte)((*ppuVar9)[pbVar7[-1]] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar9)[pbVar7[-1]] >> 3)" ( (binary_expression "(*ppuVar9)[pbVar7[-1]] >> 3" (subscript_expression "(*ppuVar9)[pbVar7[-1]]" (parenthesized_expression "(*ppuVar9)" ( (pointer_expression "*ppuVar9" * identifier) )) [ (subscript_expression "pbVar7[-1]" identifier [ number_literal ]) ]) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = needle;" (assignment_expression "pcVar13 = needle" identifier = identifier) ;) (do_statement "do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');" do (compound_statement "{\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar16 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "bVar11 = pbVar7[~uVar10 - 1];" (assignment_expression "bVar11 = pbVar7[~uVar10 - 1]" identifier = (subscript_expression "pbVar7[~uVar10 - 1]" identifier [ (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal) ])) ;) (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (if_statement "if (bVar11 != 0) goto LAB_001044ac;" if (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001044ac;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }" else (compound_statement "{\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = needle;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      bVar11 = pbVar7[~uVar10 - 1];\n      if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }\n      bVar15 = 1;\nLAB_001044ac:\n      ppuVar9 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;\n    }" { (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = needle;" (assignment_expression "pcVar13 = needle" identifier = identifier) ;) (do_statement "do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');" do (compound_statement "{\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar16 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "bVar11 = pbVar7[~uVar10 - 1];" (assignment_expression "bVar11 = pbVar7[~uVar10 - 1]" identifier = (subscript_expression "pbVar7[~uVar10 - 1]" identifier [ (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal) ])) ;) (if_statement "if (bVar11 == 0) {\n        _Var14 = true;\n        goto LAB_00104442;\n      }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        _Var14 = true;\n        goto LAB_00104442;\n      }" { (expression_statement "_Var14 = true;" (assignment_expression "_Var14 = true" identifier = true) ;) (goto_statement "goto LAB_00104442;" goto statement_identifier ;) })) (expression_statement "bVar15 = 1;" (assignment_expression "bVar15 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001044ac:\n      ppuVar9 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar9 = __ctype_b_loc();" (assignment_expression "ppuVar9 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (expression_statement "bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1;" (assignment_expression "bVar12 = ((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1" identifier = (binary_expression "((byte)((*ppuVar9)[bVar11] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar9)[bVar11] >> 3) ^ 1)" ( (binary_expression "(byte)((*ppuVar9)[bVar11] >> 3) ^ 1" (call_expression "(byte)((*ppuVar9)[bVar11] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar9)[bVar11] >> 3)" ( (binary_expression "(*ppuVar9)[bVar11] >> 3" (subscript_expression "(*ppuVar9)[bVar11]" (parenthesized_expression "(*ppuVar9)" ( (pointer_expression "*ppuVar9" * identifier) )) [ identifier ]) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) }))) (expression_statement "_Var14 = (_Bool)(bVar15 & bVar12);" (assignment_expression "_Var14 = (_Bool)(bVar15 & bVar12)" identifier = (call_expression "(_Bool)(bVar15 & bVar12)" (parenthesized_expression "(_Bool)" ( identifier )) (argument_list "(bVar15 & bVar12)" ( (binary_expression "bVar15 & bVar12" identifier & identifier) )))) ;) (if_statement "if ((_Var14 != false) || (*pbVar7 == 0)) goto LAB_00104442;" if (parenthesized_expression "((_Var14 != false) || (*pbVar7 == 0))" ( (binary_expression "(_Var14 != false) || (*pbVar7 == 0)" (parenthesized_expression "(_Var14 != false)" ( (binary_expression "_Var14 != false" identifier != false) )) || (parenthesized_expression "(*pbVar7 == 0)" ( (binary_expression "*pbVar7 == 0" (pointer_expression "*pbVar7" * identifier) == number_literal) ))) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "string = (char *)(pbVar7 + 1);" (assignment_expression "string = (char *)(pbVar7 + 1)" identifier = (cast_expression "(char *)(pbVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar7 + 1)" ( (binary_expression "pbVar7 + 1" identifier + number_literal) )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_001040e2:\n  if (string_iter.next_done != false) goto LAB_0010412c;" statement_identifier : (if_statement "if (string_iter.next_done != false) goto LAB_0010412c;" if (parenthesized_expression "(string_iter.next_done != false)" ( (binary_expression "string_iter.next_done != false" (field_expression "string_iter.next_done" identifier . field_identifier) != false) )) (goto_statement "goto LAB_0010412c;" goto statement_identifier ;))) (if_statement "if (string_iter.in_shift == false) {\n    if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      string_iter.in_shift = true;\n      goto LAB_001041e7;\n    }\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n    string_iter.cur.wc_valid = true;\n  }\n  else {\nLAB_001041e7:\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }" if (parenthesized_expression "(string_iter.in_shift == false)" ( (binary_expression "string_iter.in_shift == false" (field_expression "string_iter.in_shift" identifier . field_identifier) == false) )) (compound_statement "{\n    if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      string_iter.in_shift = true;\n      goto LAB_001041e7;\n    }\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;\n    string_iter.cur.wc_valid = true;\n  }" { (if_statement "if ((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      string_iter.in_shift = true;\n      goto LAB_001041e7;\n    }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4) >>\n         (*string_iter.cur.ptr & 0x1fU)" (pointer_expression "*(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)((byte)*string_iter.cur.ptr >> 5) * 4" identifier + (binary_expression "(ulong)((byte)*string_iter.cur.ptr >> 5) * 4" (call_expression "(ulong)((byte)*string_iter.cur.ptr >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((byte)*string_iter.cur.ptr >> 5)" ( (binary_expression "(byte)*string_iter.cur.ptr >> 5" (binary_expression "(byte)*string_iter.cur.ptr" (parenthesized_expression "(byte)" ( identifier )) * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*string_iter.cur.ptr & 0x1fU)" ( (binary_expression "*string_iter.cur.ptr & 0x1fU" (pointer_expression "*string_iter.cur.ptr" * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      string_iter.in_shift = true;\n      goto LAB_001041e7;\n    }" { (expression_statement "iVar5 = mbsinit((mbstate_t *)&string_iter.state);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)&string_iter.state)" identifier = (call_expression "mbsinit((mbstate_t *)&string_iter.state)" identifier (argument_list "((mbstate_t *)&string_iter.state)" ( (cast_expression "(mbstate_t *)&string_iter.state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier))) )))) ;) (if_statement "if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "string_iter.in_shift = true;" (assignment_expression "string_iter.in_shift = true" (field_expression "string_iter.in_shift" identifier . field_identifier) = true) ;) (goto_statement "goto LAB_001041e7;" goto statement_identifier ;) })) (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;" (assignment_expression "string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "(wchar_t)*string_iter.cur.ptr" (parenthesized_expression "(wchar_t)" ( identifier )) * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier))) ;) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) }) (else_clause "else {\nLAB_001041e7:\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }" else (compound_statement "{\nLAB_001041e7:\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }" { (labeled_statement "LAB_001041e7:\n    sVar8 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (expression_statement "sVar6 = strnlen1(string_iter.cur.ptr,sVar8);" (assignment_expression "sVar6 = strnlen1(string_iter.cur.ptr,sVar8)" identifier = (call_expression "strnlen1(string_iter.cur.ptr,sVar8)" identifier (argument_list "(string_iter.cur.ptr,sVar8)" ( (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) , identifier )))) ;) (expression_statement "string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);" (assignment_expression "string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (call_expression "rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" identifier (argument_list "(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" ( (pointer_expression "&string_iter.cur.wc" & (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) , identifier , identifier , (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier)) )))) ;) (if_statement "if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" if (parenthesized_expression "(string_iter.cur.bytes == 0xffffffffffffffff)" ( (binary_expression "string_iter.cur.bytes == 0xffffffffffffffff" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" else (if_statement "if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" if (parenthesized_expression "(string_iter.cur.bytes == 0xfffffffffffffffe)" ( (binary_expression "string_iter.cur.bytes == 0xfffffffffffffffe" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }" { (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (do_statement "do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');" do (compound_statement "{\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar16 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "string_iter.cur.bytes = ~uVar10 - 1;" (assignment_expression "string_iter.cur.bytes = ~uVar10 - 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal)) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" else (compound_statement "{\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" { (if_statement "if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" if (parenthesized_expression "(string_iter.cur.bytes == 0)" ( (binary_expression "string_iter.cur.bytes == 0" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(*string_iter.cur.ptr != '\0')" ( (binary_expression "*string_iter.cur.ptr != '\0'" (pointer_expression "*string_iter.cur.ptr" * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(string_iter.cur.wc != L'\0')" ( (binary_expression "string_iter.cur.wc != L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) (expression_statement "iVar5 = mbsinit((mbstate_t *)&string_iter.state);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)&string_iter.state)" identifier = (call_expression "mbsinit((mbstate_t *)&string_iter.state)" identifier (argument_list "((mbstate_t *)&string_iter.state)" ( (cast_expression "(mbstate_t *)&string_iter.state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier))) )))) ;) (if_statement "if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        string_iter.in_shift = false;\n      }" { (expression_statement "string_iter.in_shift = false;" (assignment_expression "string_iter.in_shift = false" (field_expression "string_iter.in_shift" identifier . field_identifier) = false) ;) })) }))))) }))) (expression_statement "string_iter.next_done = true;" (assignment_expression "string_iter.next_done = true" (field_expression "string_iter.next_done" identifier . field_identifier) = true) ;) (labeled_statement "LAB_0010412c:\n  if (((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&\n     (bVar11 = _Var4, string_iter.cur.wc_valid != false)) {\n    iVar5 = iswalnum(string_iter.cur.wc);\n    bVar11 = iVar5 == 0;\n  }" statement_identifier : (if_statement "if (((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&\n     (bVar11 = _Var4, string_iter.cur.wc_valid != false)) {\n    iVar5 = iswalnum(string_iter.cur.wc);\n    bVar11 = iVar5 == 0;\n  }" if (parenthesized_expression "(((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&\n     (bVar11 = _Var4, string_iter.cur.wc_valid != false))" ( (binary_expression "((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&\n     (bVar11 = _Var4, string_iter.cur.wc_valid != false)" (parenthesized_expression "((string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0'))" ( (binary_expression "(string_iter.cur.wc_valid == false) ||\n      (bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')" (parenthesized_expression "(string_iter.cur.wc_valid == false)" ( (binary_expression "string_iter.cur.wc_valid == false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == false) )) || (parenthesized_expression "(bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')" ( (comma_expression "bVar11 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0'" (assignment_expression "bVar11 = string_iter.cur.wc_valid" identifier = (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) , (binary_expression "string_iter.cur.wc != L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != (char_literal "L'\0'" L' escape_sequence '))) ))) )) && (parenthesized_expression "(bVar11 = _Var4, string_iter.cur.wc_valid != false)" ( (comma_expression "bVar11 = _Var4, string_iter.cur.wc_valid != false" (assignment_expression "bVar11 = _Var4" identifier = identifier) , (binary_expression "string_iter.cur.wc_valid != false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != false)) ))) )) (compound_statement "{\n    iVar5 = iswalnum(string_iter.cur.wc);\n    bVar11 = iVar5 == 0;\n  }" { (expression_statement "iVar5 = iswalnum(string_iter.cur.wc);" (assignment_expression "iVar5 = iswalnum(string_iter.cur.wc)" identifier = (call_expression "iswalnum(string_iter.cur.wc)" identifier (argument_list "(string_iter.cur.wc)" ( (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) )))) ;) (expression_statement "bVar11 = iVar5 == 0;" (assignment_expression "bVar11 = iVar5 == 0" identifier = (binary_expression "iVar5 == 0" identifier == number_literal)) ;) }))) (expression_statement "_Var14 = (_Bool)(local_c9 & bVar11);" (assignment_expression "_Var14 = (_Bool)(local_c9 & bVar11)" identifier = (call_expression "(_Bool)(local_c9 & bVar11)" (parenthesized_expression "(_Bool)" ( identifier )) (argument_list "(local_c9 & bVar11)" ( (binary_expression "local_c9 & bVar11" identifier & identifier) )))) ;) (if_statement "if (_Var14 != false) goto LAB_00104442;" if (parenthesized_expression "(_Var14 != false)" ( (binary_expression "_Var14 != false" identifier != false) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "string_iter.in_shift = false;" (assignment_expression "string_iter.in_shift = false" (field_expression "string_iter.in_shift" identifier . field_identifier) = false) ;) (expression_statement "string_iter.state.__count = L'\0';" (assignment_expression "string_iter.state.__count = L'\0'" (field_expression "string_iter.state.__count" (field_expression "string_iter.state" identifier . field_identifier) . field_identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0;" (assignment_expression "string_iter.state.__value = (anon_union_4_2_91654ee9_for___value)0x0" (field_expression "string_iter.state.__value" (field_expression "string_iter.state" identifier . field_identifier) . field_identifier) = (cast_expression "(anon_union_4_2_91654ee9_for___value)0x0" ( (type_descriptor "anon_union_4_2_91654ee9_for___value" type_identifier) ) number_literal)) ;) (expression_statement "string_iter.next_done = false;" (assignment_expression "string_iter.next_done = false" (field_expression "string_iter.next_done" identifier . field_identifier) = false) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1) == 0) {\n    string_iter.cur.ptr = (char *)pbVar7;\n    iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    string_iter.in_shift = true;\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }\n  else {\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)(char)*pbVar7;\n    string_iter.cur.wc_valid = true;\n    string_iter.cur.ptr = (char *)pbVar7;\n  }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4) >> (*pbVar7 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(*pbVar7 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(*pbVar7 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(*pbVar7 >> 5) * 4" identifier + (binary_expression "(ulong)(*pbVar7 >> 5) * 4" (call_expression "(ulong)(*pbVar7 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pbVar7 >> 5)" ( (binary_expression "*pbVar7 >> 5" (pointer_expression "*pbVar7" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar7 & 0x1f)" ( (binary_expression "*pbVar7 & 0x1f" (pointer_expression "*pbVar7" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    string_iter.cur.ptr = (char *)pbVar7;\n    iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n    if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    string_iter.in_shift = true;\n    sVar8 = __ctype_get_mb_cur_max();\n    pcVar13 = string_iter.cur.ptr;\n    sVar6 = strnlen1(string_iter.cur.ptr,sVar8);\n    string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);\n    if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }\n  }" { (expression_statement "string_iter.cur.ptr = (char *)pbVar7;" (assignment_expression "string_iter.cur.ptr = (char *)pbVar7" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (cast_expression "(char *)pbVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar5 = mbsinit((mbstate_t *)&string_iter.state);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)&string_iter.state)" identifier = (call_expression "mbsinit((mbstate_t *)&string_iter.state)" identifier (argument_list "((mbstate_t *)&string_iter.state)" ( (cast_expression "(mbstate_t *)&string_iter.state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier))) )))) ;) (if_statement "if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" { comment (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "string_iter.in_shift = true;" (assignment_expression "string_iter.in_shift = true" (field_expression "string_iter.in_shift" identifier . field_identifier) = true) ;) (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (expression_statement "sVar6 = strnlen1(string_iter.cur.ptr,sVar8);" (assignment_expression "sVar6 = strnlen1(string_iter.cur.ptr,sVar8)" identifier = (call_expression "strnlen1(string_iter.cur.ptr,sVar8)" identifier (argument_list "(string_iter.cur.ptr,sVar8)" ( (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) , identifier )))) ;) (expression_statement "string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state);" (assignment_expression "string_iter.cur.bytes = rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (call_expression "rpl_mbrtowc(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" identifier (argument_list "(&string_iter.cur.wc,pcVar13,sVar6,&string_iter.state)" ( (pointer_expression "&string_iter.cur.wc" & (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) , identifier , identifier , (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier)) )))) ;) (if_statement "if (string_iter.cur.bytes == 0xffffffffffffffff) {\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" if (parenthesized_expression "(string_iter.cur.bytes == 0xffffffffffffffff)" ( (binary_expression "string_iter.cur.bytes == 0xffffffffffffffff" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n      string_iter.cur.bytes = 1;\n      string_iter.cur.wc_valid = false;\n    }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" else (if_statement "if (string_iter.cur.bytes == 0xfffffffffffffffe) {\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }\n    else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" if (parenthesized_expression "(string_iter.cur.bytes == 0xfffffffffffffffe)" ( (binary_expression "string_iter.cur.bytes == 0xfffffffffffffffe" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n      uVar10 = 0xffffffffffffffff;\n      pcVar13 = string_iter.cur.ptr;\n      do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');\n      string_iter.cur.bytes = ~uVar10 - 1;\n      string_iter.cur.wc_valid = false;\n    }" { (expression_statement "uVar10 = 0xffffffffffffffff;" (assignment_expression "uVar10 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar13 = string_iter.cur.ptr;" (assignment_expression "pcVar13 = string_iter.cur.ptr" identifier = (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) ;) (do_statement "do {\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      } while (cVar2 != '\0');" do (compound_statement "{\n        if (uVar10 == 0) break;\n        uVar10 = uVar10 - 1;\n        cVar2 = *pcVar13;\n        pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;\n      }" { (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar10 = uVar10 - 1;" (assignment_expression "uVar10 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "cVar2 = *pcVar13;" (assignment_expression "cVar2 = *pcVar13" identifier = (pointer_expression "*pcVar13" * identifier)) ;) (expression_statement "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1;" (assignment_expression "pcVar13 = pcVar13 + (ulong)bVar16 * -2 + 1" identifier = (binary_expression "pcVar13 + (ulong)bVar16 * -2 + 1" (binary_expression "pcVar13 + (ulong)bVar16 * -2" identifier + (binary_expression "(ulong)bVar16 * -2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar2 != '\0')" ( (binary_expression "cVar2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "string_iter.cur.bytes = ~uVar10 - 1;" (assignment_expression "string_iter.cur.bytes = ~uVar10 - 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "~uVar10 - 1" (unary_expression "~uVar10" ~ identifier) - number_literal)) ;) (expression_statement "string_iter.cur.wc_valid = false;" (assignment_expression "string_iter.cur.wc_valid = false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = false) ;) }) (else_clause "else {\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" else (compound_statement "{\n      if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      string_iter.cur.wc_valid = true;\n      iVar5 = mbsinit((mbstate_t *)&string_iter.state);\n      if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }\n    }" { (if_statement "if (string_iter.cur.bytes == 0) {\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" if (parenthesized_expression "(string_iter.cur.bytes == 0)" ( (binary_expression "string_iter.cur.bytes == 0" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == number_literal) )) (compound_statement "{\n        string_iter.cur.bytes = 1;\n        if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (if_statement "if (*string_iter.cur.ptr != '\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(*string_iter.cur.ptr != '\0')" ( (binary_expression "*string_iter.cur.ptr != '\0'" (pointer_expression "*string_iter.cur.ptr" * (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (string_iter.cur.wc != L'\0') {\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(string_iter.cur.wc != L'\0')" ( (binary_expression "string_iter.cur.wc != L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" { comment (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) (expression_statement "iVar5 = mbsinit((mbstate_t *)&string_iter.state);" (assignment_expression "iVar5 = mbsinit((mbstate_t *)&string_iter.state)" identifier = (call_expression "mbsinit((mbstate_t *)&string_iter.state)" identifier (argument_list "((mbstate_t *)&string_iter.state)" ( (cast_expression "(mbstate_t *)&string_iter.state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&string_iter.state" & (field_expression "string_iter.state" identifier . field_identifier))) )))) ;) (if_statement "if (iVar5 != 0) {\n        string_iter.in_shift = false;\n      }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        string_iter.in_shift = false;\n      }" { (expression_statement "string_iter.in_shift = false;" (assignment_expression "string_iter.in_shift = false" (field_expression "string_iter.in_shift" identifier . field_identifier) = false) ;) })) }))))) }) (else_clause "else {\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)(char)*pbVar7;\n    string_iter.cur.wc_valid = true;\n    string_iter.cur.ptr = (char *)pbVar7;\n  }" else (compound_statement "{\n    string_iter.cur.bytes = 1;\n    string_iter.cur.wc = (wchar_t)(char)*pbVar7;\n    string_iter.cur.wc_valid = true;\n    string_iter.cur.ptr = (char *)pbVar7;\n  }" { (expression_statement "string_iter.cur.bytes = 1;" (assignment_expression "string_iter.cur.bytes = 1" (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = number_literal) ;) (expression_statement "string_iter.cur.wc = (wchar_t)(char)*pbVar7;" (assignment_expression "string_iter.cur.wc = (wchar_t)(char)*pbVar7" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (binary_expression "(wchar_t)(char)*pbVar7" (call_expression "(wchar_t)(char)" (parenthesized_expression "(wchar_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "string_iter.cur.wc_valid = true;" (assignment_expression "string_iter.cur.wc_valid = true" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = true) ;) (expression_statement "string_iter.cur.ptr = (char *)pbVar7;" (assignment_expression "string_iter.cur.ptr = (char *)pbVar7" (field_expression "string_iter.cur.ptr" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) = (cast_expression "(char *)pbVar7" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) }))) (expression_statement "string_iter.next_done = true;" (assignment_expression "string_iter.next_done = true" (field_expression "string_iter.next_done" identifier . field_identifier) = true) ;) (if_statement "if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) goto LAB_00104442;" if (parenthesized_expression "((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0'))" ( (binary_expression "(string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')" (parenthesized_expression "(string_iter.cur.wc_valid != false)" ( (binary_expression "string_iter.cur.wc_valid != false" (field_expression "string_iter.cur.wc_valid" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) != false) )) && (parenthesized_expression "(string_iter.cur.wc == L'\0')" ( (binary_expression "string_iter.cur.wc == L'\0'" (field_expression "string_iter.cur.wc" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier) == (char_literal "L'\0'" L' escape_sequence ')) ))) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "string = (char *)(pbVar7 + string_iter.cur.bytes);" (assignment_expression "string = (char *)(pbVar7 + string_iter.cur.bytes)" identifier = (cast_expression "(char *)(pbVar7 + string_iter.cur.bytes)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar7 + string_iter.cur.bytes)" ( (binary_expression "pbVar7 + string_iter.cur.bytes" identifier + (field_expression "string_iter.cur.bytes" (field_expression "string_iter.cur" identifier . field_identifier) . field_identifier)) )))) ;) (goto_statement "goto LAB_001044df;" goto statement_identifier ;) })))
(translation_unit "byte FUN_00103b21(byte *param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}\n\n" (function_definition "byte FUN_00103b21(byte *param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}" type_identifier (function_declarator "FUN_00103b21(byte *param_1,undefined8 param_2)" identifier (parameter_list "(byte *param_1,undefined8 param_2)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined1 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "ushort **ppuVar7;" type_identifier (pointer_declarator "**ppuVar7" * (pointer_declarator "*ppuVar7" * identifier)) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "bool local_c9;" primitive_type identifier ;) (declaration "mbstate_t local_c4;" type_identifier identifier ;) (declaration "char local_bc;" primitive_type identifier ;) (declaration "byte *local_b8;" type_identifier (pointer_declarator "*local_b8" * identifier) ;) (declaration "long local_b0;" (sized_type_specifier "long" long) identifier ;) (declaration "byte local_a8;" type_identifier identifier ;) (declaration "wint_t local_a4 [7];" type_identifier (array_declarator "local_a4 [7]" identifier [ number_literal ]) ;) (declaration "char local_88;" primitive_type identifier ;) (declaration "mbstate_t local_84;" type_identifier identifier ;) (declaration "undefined1 local_7c;" type_identifier identifier ;) (declaration "byte *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "long local_70;" (sized_type_specifier "long" long) identifier ;) (declaration "byte local_68;" type_identifier identifier ;) (declaration "int local_64 [9];" primitive_type (array_declarator "local_64 [9]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "__ptr = (byte *)FUN_001048bd(param_2,2);" (assignment_expression "__ptr = (byte *)FUN_001048bd(param_2,2)" identifier = (cast_expression "(byte *)FUN_001048bd(param_2,2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001048bd(param_2,2)" identifier (argument_list "(param_2,2)" ( identifier , number_literal ))))) ;) (labeled_statement "LAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );" do (compound_statement "{\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  }" { (if_statement "if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }" if (parenthesized_expression "(*param_1 == 0)" ( (binary_expression "*param_1 == 0" (pointer_expression "*param_1" * identifier) == number_literal) )) (compound_statement "{\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }" { (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00104442:\n      free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n        return bVar12;\n      }" { (return_statement "return bVar12;" return identifier ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);" (assignment_expression "pbVar5 = (byte *)FUN_00106a98(param_1,__ptr)" identifier = (cast_expression "(byte *)FUN_00106a98(param_1,__ptr)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00106a98(param_1,__ptr)" identifier (argument_list "(param_1,__ptr)" ( identifier , identifier ))))) ;) (if_statement "if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar12 = 0;\n      goto LAB_00104442;\n    }" { (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00104442;" goto statement_identifier ;) })) (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (if_statement "if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }" if (parenthesized_expression "(1 < sVar6)" ( (binary_expression "1 < sVar6" number_literal < identifier) )) (compound_statement "{\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (if_statement "if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }" if (parenthesized_expression "(param_1 < pbVar5)" ( (binary_expression "param_1 < pbVar5" identifier < identifier) )) (compound_statement "{\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }" { (expression_statement "local_b8 = param_1;" (assignment_expression "local_b8 = param_1" identifier = identifier) ;) (do_statement "do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);" do (compound_statement "{\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        }" { (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (if_statement "if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }" { (labeled_statement "LAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n              local_b0 = 1;\n              local_a8 = 0;\n            }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (if_statement "if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);" do (compound_statement "{\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (compound_statement "{\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" { (if_statement "if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" { (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" { (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 != 0) {\n                bVar1 = false;\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                bVar1 = false;\n              }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) })) }))))) }) (else_clause "else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" else (compound_statement "{\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_b8 >> 5)" ( (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_b8 & 0x1f)" ( (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }" { (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" { (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (goto_statement "goto LAB_00103ba8;" goto statement_identifier ;) })) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) }))) (expression_statement "local_bc = 1;" (assignment_expression "local_bc = 1" identifier = number_literal) ;) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }" if (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" ( (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_a4[0] == 0)" ( (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n                    \n            abort();\n          }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_b8 = local_b8 + local_b0;" (assignment_expression "local_b8 = local_b8 + local_b0" identifier = (binary_expression "local_b8 + local_b0" identifier + identifier)) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_b8 < pbVar5)" ( (binary_expression "local_b8 < pbVar5" identifier < identifier) )) ;) (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" identifier = true) ;) (if_statement "if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }" if (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }" { (expression_statement "iVar3 = iswalnum(local_a4[0]);" (assignment_expression "iVar3 = iswalnum(local_a4[0])" identifier = (call_expression "iswalnum(local_a4[0])" identifier (argument_list "(local_a4[0])" ( (subscript_expression "local_a4[0]" identifier [ number_literal ]) )))) ;) (expression_statement "local_c9 = iVar3 == 0;" (assignment_expression "local_c9 = iVar3 == 0" identifier = (binary_expression "iVar3 == 0" identifier == number_literal)) ;) })) }) (else_clause "else {\n        local_c9 = true;\n      }" else (compound_statement "{\n        local_c9 = true;\n      }" { (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" identifier = true) ;) }))) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "local_88 = '\0';" (assignment_expression "local_88 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_84.__count = 0;" (assignment_expression "local_84.__count = 0" (field_expression "local_84.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_84.__value = (_union_27)0x0;" (assignment_expression "local_84.__value = (_union_27)0x0" (field_expression "local_84.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" identifier = identifier) ;) (expression_statement "local_78 = __ptr;" (assignment_expression "local_78 = __ptr" identifier = identifier) ;) (do_statement "do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );" do (compound_statement "{\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      }" { (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_bc = '\0';" (assignment_expression "local_bc = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" if (parenthesized_expression "(local_88 == '\0')" ( (binary_expression "local_88 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_78 >> 5) * 4" (call_expression "(ulong)(*local_78 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_78 >> 5)" ( (binary_expression "*local_78 >> 5" (pointer_expression "*local_78" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_78 & 0x1f)" ( (binary_expression "*local_78 & 0x1f" (pointer_expression "*local_78" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }" { (expression_statement "iVar3 = mbsinit(&local_84);" (assignment_expression "iVar3 = mbsinit(&local_84)" identifier = (call_expression "mbsinit(&local_84)" identifier (argument_list "(&local_84)" ( (pointer_expression "&local_84" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" { (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "local_88 = '\x01';" (assignment_expression "local_88 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (goto_statement "goto LAB_00103fc8;" goto statement_identifier ;) })) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (expression_statement "local_64[0] = (int)(char)*local_78;" (assignment_expression "local_64[0] = (int)(char)*local_78" (subscript_expression "local_64[0]" identifier [ number_literal ]) = (cast_expression "(int)(char)*local_78" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*local_78" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*local_78" * identifier)))) ;) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" else (compound_statement "{\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" { (labeled_statement "LAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_78;" (assignment_expression "pbVar10 = local_78" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_78,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_78,sVar6)" identifier = (call_expression "FUN_00104889(local_78,sVar6)" identifier (argument_list "(local_78,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);" (assignment_expression "local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84)" identifier = (call_expression "FUN_00105ccf(local_64,pbVar10,uVar4,&local_84)" identifier (argument_list "(local_64,pbVar10,uVar4,&local_84)" ( identifier , identifier , identifier , (pointer_expression "&local_84" & identifier) )))) ;) (if_statement "if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" if (parenthesized_expression "(local_70 == -1)" ( (binary_expression "local_70 == -1" identifier == number_literal) )) (compound_statement "{\n            local_70 = 1;\n            local_68 = 0;\n          }" { (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" else (if_statement "if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" if (parenthesized_expression "(local_70 == -2)" ( (binary_expression "local_70 == -2" identifier == number_literal) )) (compound_statement "{\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_78;" (assignment_expression "pbVar10 = local_78" identifier = identifier) ;) (do_statement "do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);" do (compound_statement "{\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_70 = ~uVar8 - 1;" (assignment_expression "local_70 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" else (compound_statement "{\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" { (if_statement "if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" if (parenthesized_expression "(local_70 == 0)" ( (binary_expression "local_70 == 0" identifier == number_literal) )) (compound_statement "{\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" { (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) (if_statement "if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(*local_78 != 0)" ( (binary_expression "*local_78 != 0" (pointer_expression "*local_78" * identifier) != number_literal) )) (compound_statement "{\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" { (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(local_64[0] != 0)" ( (binary_expression "local_64[0] != 0" (subscript_expression "local_64[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" { (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = mbsinit(&local_84);" (assignment_expression "iVar3 = mbsinit(&local_84)" identifier = (call_expression "mbsinit(&local_84)" identifier (argument_list "(&local_84)" ( (pointer_expression "&local_84" & identifier) )))) ;) (if_statement "if (iVar3 != 0) {\n              local_88 = '\0';\n            }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n              local_88 = '\0';\n            }" { (expression_statement "local_88 = '\0';" (assignment_expression "local_88 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) })) }))))) }))) (expression_statement "bVar11 = local_68;" (assignment_expression "bVar11 = local_68" identifier = identifier) ;) (expression_statement "local_7c = 1;" (assignment_expression "local_7c = 1" identifier = number_literal) ;) (expression_statement "uVar2 = local_7c;" (assignment_expression "uVar2 = local_7c" identifier = identifier) ;) (expression_statement "local_7c = 1;" (assignment_expression "local_7c = 1" identifier = number_literal) ;) (if_statement "if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;" if (parenthesized_expression "((local_68 != 0) && (local_64[0] == 0))" ( (binary_expression "(local_68 != 0) && (local_64[0] == 0)" (parenthesized_expression "(local_68 != 0)" ( (binary_expression "local_68 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_64[0] == 0)" ( (binary_expression "local_64[0] == 0" (subscript_expression "local_64[0]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_001040e2;" goto statement_identifier ;)) (expression_statement "local_7c = uVar2;" (assignment_expression "local_7c = uVar2" identifier = identifier) ;) (if_statement "if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }" if (parenthesized_expression "(local_bc == '\0')" ( (binary_expression "local_bc == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }" { (if_statement "if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }" { (labeled_statement "LAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n              local_b0 = 1;\n              local_a8 = 0;\n            }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (if_statement "if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);" do (compound_statement "{\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" else (compound_statement "{\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" { (if_statement "if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" { (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" { (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 != 0) {\n                bVar1 = false;\n              }" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n                bVar1 = false;\n              }" { (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) })) }))))) }) (else_clause "else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" else (compound_statement "{\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_b8 >> 5)" ( (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_b8 & 0x1f)" ( (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }" { (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" { (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (goto_statement "goto LAB_00103db9;" goto statement_identifier ;) })) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) }))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) })) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }" if (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" ( (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_a4[0] == 0)" ( (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n                    \n          abort();\n        }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_b8 = local_b8 + local_b0;" (assignment_expression "local_b8 = local_b8 + local_b0" identifier = (binary_expression "local_b8 + local_b0" identifier + identifier)) ;) (expression_statement "local_78 = local_78 + local_70;" (assignment_expression "local_78 = local_78 + local_70" identifier = (binary_expression "local_78 + local_70" identifier + identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" if (parenthesized_expression "(param_1 < pbVar5)" ( (binary_expression "param_1 < pbVar5" identifier < identifier) )) (compound_statement "{\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }" { (expression_statement "ppuVar7 = __ctype_b_loc();" (assignment_expression "ppuVar7 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;" (assignment_expression "bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1" identifier = (binary_expression "((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1)" ( (binary_expression "(byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1" (call_expression "(byte)((*ppuVar7)[pbVar5[-1]] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar7)[pbVar5[-1]] >> 3)" ( (binary_expression "(*ppuVar7)[pbVar5[-1]] >> 3" (subscript_expression "(*ppuVar7)[pbVar5[-1]]" (parenthesized_expression "(*ppuVar7)" ( (pointer_expression "*ppuVar7" * identifier) )) [ (subscript_expression "pbVar5[-1]" identifier [ number_literal ]) ]) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar11 = *pbVar10;" (assignment_expression "bVar11 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "bVar11 = pbVar5[~uVar8 - 1];" (assignment_expression "bVar11 = pbVar5[~uVar8 - 1]" identifier = (subscript_expression "pbVar5[~uVar8 - 1]" identifier [ (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal) ])) ;) (expression_statement "bVar9 = 1;" (assignment_expression "bVar9 = 1" identifier = number_literal) ;) (if_statement "if (bVar11 != 0) goto LAB_001044ac;" if (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001044ac;" goto statement_identifier ;)) }) (else_clause "else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" else (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "bVar11 = pbVar5[~uVar8 - 1];" (assignment_expression "bVar11 = pbVar5[~uVar8 - 1]" identifier = (subscript_expression "pbVar5[~uVar8 - 1]" identifier [ (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal) ])) ;) (if_statement "if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        bVar12 = 1;\n        goto LAB_00104442;\n      }" { (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104442;" goto statement_identifier ;) })) (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001044ac:\n      ppuVar7 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar7 = __ctype_b_loc();" (assignment_expression "ppuVar7 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (expression_statement "bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;" (assignment_expression "bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1" identifier = (binary_expression "((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar7)[bVar11] >> 3) ^ 1)" ( (binary_expression "(byte)((*ppuVar7)[bVar11] >> 3) ^ 1" (call_expression "(byte)((*ppuVar7)[bVar11] >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppuVar7)[bVar11] >> 3)" ( (binary_expression "(*ppuVar7)[bVar11] >> 3" (subscript_expression "(*ppuVar7)[bVar11]" (parenthesized_expression "(*ppuVar7)" ( (pointer_expression "*ppuVar7" * identifier) )) [ identifier ]) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) }))) (expression_statement "bVar12 = bVar12 & bVar9;" (assignment_expression "bVar12 = bVar12 & bVar9" identifier = (binary_expression "bVar12 & bVar9" identifier & identifier)) ;) (if_statement "if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;" if (parenthesized_expression "((bVar12 != 0) || (*pbVar5 == 0))" ( (binary_expression "(bVar12 != 0) || (*pbVar5 == 0)" (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) || (parenthesized_expression "(*pbVar5 == 0)" ( (binary_expression "*pbVar5 == 0" (pointer_expression "*pbVar5" * identifier) == number_literal) ))) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "param_1 = pbVar5 + 1;" (assignment_expression "param_1 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) (labeled_statement "LAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;" statement_identifier : (if_statement "if (local_bc != '\0') goto LAB_0010412c;" if (parenthesized_expression "(local_bc != '\0')" ( (binary_expression "local_bc != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_0010412c;" goto statement_identifier ;))) (if_statement "if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }" { (labeled_statement "LAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();" statement_identifier : (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n      local_b0 = 1;\n      local_a8 = 0;\n    }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (if_statement "if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (compound_statement "{\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" { (if_statement "if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" { (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" { (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "mbsinit(&local_c4);" (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) ))) ;) }))))) }) (else_clause "else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" else (compound_statement "{\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" { (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*local_b8 >> 5)" ( (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*local_b8 & 0x1f)" ( (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }" { (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" { (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (goto_statement "goto LAB_001041e7;" goto statement_identifier ;) })) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) }))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (labeled_statement "LAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" statement_identifier : (if_statement "if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" if (parenthesized_expression "(((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     )" ( (binary_expression "((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)" (parenthesized_expression "((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0))" ( (binary_expression "(local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)" (parenthesized_expression "(local_a8 == 0)" ( (binary_expression "local_a8 == 0" identifier == number_literal) )) || (parenthesized_expression "(bVar12 = local_a8, local_a4[0] != 0)" ( (comma_expression "bVar12 = local_a8, local_a4[0] != 0" (assignment_expression "bVar12 = local_a8" identifier = identifier) , (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal)) ))) )) && (parenthesized_expression "(bVar12 = bVar11, local_a8 != 0)" ( (comma_expression "bVar12 = bVar11, local_a8 != 0" (assignment_expression "bVar12 = bVar11" identifier = identifier) , (binary_expression "local_a8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" { (expression_statement "iVar3 = iswalnum(local_a4[0]);" (assignment_expression "iVar3 = iswalnum(local_a4[0])" identifier = (call_expression "iswalnum(local_a4[0])" identifier (argument_list "(local_a4[0])" ( (subscript_expression "local_a4[0]" identifier [ number_literal ]) )))) ;) (expression_statement "bVar12 = iVar3 == 0;" (assignment_expression "bVar12 = iVar3 == 0" identifier = (binary_expression "iVar3 == 0" identifier == number_literal)) ;) }))) (expression_statement "bVar12 = local_c9 & bVar12;" (assignment_expression "bVar12 = local_c9 & bVar12" identifier = (binary_expression "local_c9 & bVar12" identifier & identifier)) ;) (if_statement "if (bVar12 != 0) goto LAB_00104442;" if (parenthesized_expression "(bVar12 != 0)" ( (binary_expression "bVar12 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" identifier = number_literal) ;) (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" if (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1)" ( (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" * (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" ( (binary_expression "&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4" (pointer_expression "&DAT_00109ea0" & identifier) + (binary_expression "(ulong)(*pbVar5 >> 5) * 4" (call_expression "(ulong)(*pbVar5 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*pbVar5 >> 5)" ( (binary_expression "*pbVar5 >> 5" (pointer_expression "*pbVar5" * identifier) >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(*pbVar5 & 0x1f)" ( (binary_expression "*pbVar5 & 0x1f" (pointer_expression "*pbVar5" * identifier) & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }" { (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" identifier = identifier) ;) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" identifier = (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" { (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" identifier (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" ( (string_literal ""mbsinit (&iter->state)"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" identifier = (call_expression "__ctype_get_mb_cur_max()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" identifier = (call_expression "FUN_00104889(local_b8,sVar6)" identifier (argument_list "(local_b8,sVar6)" ( identifier , identifier )))) ;) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier = (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" identifier (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" ( identifier , identifier , identifier , (pointer_expression "&local_c4" & identifier) )))) ;) (if_statement "if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -1)" ( (binary_expression "local_b0 == -1" identifier == number_literal) )) (compound_statement "{\n      local_b0 = 1;\n      local_a8 = 0;\n    }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (if_statement "if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" if (parenthesized_expression "(local_b0 == -2)" ( (binary_expression "local_b0 == -2" identifier == number_literal) )) (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }" { (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" identifier = identifier) ;) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);" do (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" { (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "bVar11 = *pbVar10;" (assignment_expression "bVar11 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" identifier = (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" identifier + (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11 != 0)" ( (binary_expression "bVar11 != 0" identifier != number_literal) )) ;) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" identifier = (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" ~ identifier) - number_literal)) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" else (compound_statement "{\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" { (if_statement "if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" if (parenthesized_expression "(local_b0 == 0)" ( (binary_expression "local_b0 == 0" identifier == number_literal) )) (compound_statement "{\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (if_statement "if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(*local_b8 != 0)" ( (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" * identifier) != number_literal) )) (compound_statement "{\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" { (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" identifier (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" ( (string_literal ""*iter->cur.ptr == \'\\0\'"" " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) (if_statement "if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" if (parenthesized_expression "(local_a4[0] != 0)" ( (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" { (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" identifier (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" ( (string_literal ""iter->cur.wc == 0"" " string_content ") , (string_literal ""mbuiter.h"" " string_content ") , number_literal , (string_literal ""mbuiter_multi_next"" " string_content ") ))) ;) })) })) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "mbsinit(&local_c4);" (call_expression "mbsinit(&local_c4)" identifier (argument_list "(&local_c4)" ( (pointer_expression "&local_c4" & identifier) ))) ;) }))))) }) (else_clause "else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" else (compound_statement "{\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" { (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" identifier = number_literal) ;) (expression_statement "local_a4[0] = (wint_t)(char)*pbVar5;" (assignment_expression "local_a4[0] = (wint_t)(char)*pbVar5" (subscript_expression "local_a4[0]" identifier [ number_literal ]) = (binary_expression "(wint_t)(char)*pbVar5" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" identifier = number_literal) ;) (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" identifier = identifier) ;) }))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;" if (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" ( (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" ( (binary_expression "local_a8 != 0" identifier != number_literal) )) && (parenthesized_expression "(local_a4[0] == 0)" ( (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" identifier [ number_literal ]) == number_literal) ))) )) (goto_statement "goto LAB_00104442;" goto statement_identifier ;)) (expression_statement "param_1 = pbVar5 + local_b0;" (assignment_expression "param_1 = pbVar5 + local_b0" identifier = (binary_expression "pbVar5 + local_b0" identifier + identifier)) ;) (goto_statement "goto LAB_001044df;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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 = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) })) }))))) }) (else_clause else (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 & IDENT) + (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 IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (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 & IDENT) + (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 IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) })) }))))) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) })) }))))) }) (else_clause else (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 & IDENT) + (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 IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ (subscript_expression IDENT [ LIT ]) ]) >> LIT) ))) ^ LIT) )) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (unary_expression ~ IDENT) - LIT) ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (unary_expression ~ IDENT) - LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ]) >> LIT) ))) ^ LIT) )) & LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) }))))) }) (else_clause else (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 & IDENT) + (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 IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) }))) (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 (field_expression IDENT . field_identifier) = LIT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (cast_expression ( (type_descriptor TYPE) ) LIT)) ;) (expression_statement (assignment_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 & IDENT) + (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 = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) - LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence escape_sequence string_content escape_sequence ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) }))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "byte FUN_00103b21(byte *param_1,undefined8 param_2)\n\n{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}" (type_identifier "byte") (function_declarator "FUN_00103b21(byte *param_1,undefined8 param_2)" (identifier "FUN_00103b21") (parameter_list "(byte *param_1,undefined8 param_2)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined1 uVar2;\n  int iVar3;\n  byte *__ptr;\n  undefined8 uVar4;\n  byte *pbVar5;\n  size_t sVar6;\n  ushort **ppuVar7;\n  ulong uVar8;\n  byte bVar9;\n  byte *pbVar10;\n  byte bVar11;\n  byte bVar12;\n  long in_FS_OFFSET;\n  byte bVar13;\n  bool local_c9;\n  mbstate_t local_c4;\n  char local_bc;\n  byte *local_b8;\n  long local_b0;\n  byte local_a8;\n  wint_t local_a4 [7];\n  char local_88;\n  mbstate_t local_84;\n  undefined1 local_7c;\n  byte *local_78;\n  long local_70;\n  byte local_68;\n  int local_64 [9];\n  long local_40;\n  \n  bVar13 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  __ptr = (byte *)FUN_001048bd(param_2,2);\nLAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );\nLAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;\n  if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }\n  local_bc = '\x01';\nLAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }\n  bVar12 = local_c9 & bVar12;\n  if (bVar12 != 0) goto LAB_00104442;\n  local_c4.__count = 0;\n  local_c4.__value = (_union_27)0x0;\n  local_bc = 0;\n  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }\n  local_bc = '\x01';\n  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;\n  param_1 = pbVar5 + local_b0;\n  goto LAB_001044df;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined1 uVar2;" (type_identifier "undefined1") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "byte *__ptr;" (type_identifier "byte") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "ushort **ppuVar7;" (type_identifier "ushort") (pointer_declarator "**ppuVar7" (* "*") (pointer_declarator "*ppuVar7" (* "*") (identifier "ppuVar7"))) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "bool local_c9;" (primitive_type "bool") (identifier "local_c9") (; ";")) (declaration "mbstate_t local_c4;" (type_identifier "mbstate_t") (identifier "local_c4") (; ";")) (declaration "char local_bc;" (primitive_type "char") (identifier "local_bc") (; ";")) (declaration "byte *local_b8;" (type_identifier "byte") (pointer_declarator "*local_b8" (* "*") (identifier "local_b8")) (; ";")) (declaration "long local_b0;" (sized_type_specifier "long" (long "long")) (identifier "local_b0") (; ";")) (declaration "byte local_a8;" (type_identifier "byte") (identifier "local_a8") (; ";")) (declaration "wint_t local_a4 [7];" (type_identifier "wint_t") (array_declarator "local_a4 [7]" (identifier "local_a4") ([ "[") (number_literal "7") (] "]")) (; ";")) (declaration "char local_88;" (primitive_type "char") (identifier "local_88") (; ";")) (declaration "mbstate_t local_84;" (type_identifier "mbstate_t") (identifier "local_84") (; ";")) (declaration "undefined1 local_7c;" (type_identifier "undefined1") (identifier "local_7c") (; ";")) (declaration "byte *local_78;" (type_identifier "byte") (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "long local_70;" (sized_type_specifier "long" (long "long")) (identifier "local_70") (; ";")) (declaration "byte local_68;" (type_identifier "byte") (identifier "local_68") (; ";")) (declaration "int local_64 [9];" (primitive_type "int") (array_declarator "local_64 [9]" (identifier "local_64") ([ "[") (number_literal "9") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "__ptr = (byte *)FUN_001048bd(param_2,2);" (assignment_expression "__ptr = (byte *)FUN_001048bd(param_2,2)" (identifier "__ptr") (= "=") (cast_expression "(byte *)FUN_001048bd(param_2,2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001048bd(param_2,2)" (identifier "FUN_001048bd") (argument_list "(param_2,2)" (( "(") (identifier "param_2") (, ",") (number_literal "2") () ")"))))) (; ";")) (labeled_statement "LAB_001044df:\n  do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );" (statement_identifier "LAB_001044df") (: ":") (do_statement "do {\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  } while( true );" (do "do") (compound_statement "{\n    if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }\n    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);\n    if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }\n    if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }\n    bVar12 = bVar12 & bVar9;\n    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;\n    param_1 = pbVar5 + 1;\n  }" ({ "{") (if_statement "if (*param_1 == 0) {\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }" (if "if") (parenthesized_expression "(*param_1 == 0)" (( "(") (binary_expression "*param_1 == 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      bVar12 = 0;\nLAB_00104442:\n      free(__ptr);\n      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }\n                    \n      __stack_chk_fail();\n    }" ({ "{") (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00104442:\n      free(__ptr);" (statement_identifier "LAB_00104442") (: ":") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";"))) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n        return bVar12;\n      }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n        return bVar12;\n      }" ({ "{") (return_statement "return bVar12;" (return "return") (identifier "bVar12") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);" (assignment_expression "pbVar5 = (byte *)FUN_00106a98(param_1,__ptr)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)FUN_00106a98(param_1,__ptr)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00106a98(param_1,__ptr)" (identifier "FUN_00106a98") (argument_list "(param_1,__ptr)" (( "(") (identifier "param_1") (, ",") (identifier "__ptr") () ")"))))) (; ";")) (if_statement "if (pbVar5 == (byte *)0x0) {\n      bVar12 = 0;\n      goto LAB_00104442;\n    }" (if "if") (parenthesized_expression "(pbVar5 == (byte *)0x0)" (( "(") (binary_expression "pbVar5 == (byte *)0x0" (identifier "pbVar5") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      bVar12 = 0;\n      goto LAB_00104442;\n    }" ({ "{") (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00104442;" (goto "goto") (statement_identifier "LAB_00104442") (; ";")) (} "}"))) (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" (identifier "sVar6") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (1 < sVar6) {\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(1 < sVar6)" (( "(") (binary_expression "1 < sVar6" (number_literal "1") (< "<") (identifier "sVar6")) () ")")) (compound_statement "{\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }\n      bVar1 = false;\n      local_c4.__count = 0;\n      local_c4.__value = (_union_27)0x0;\n      local_88 = '\0';\n      local_84.__count = 0;\n      local_84.__value = (_union_27)0x0;\n      local_b8 = pbVar5;\n      local_78 = __ptr;\n      do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );\n    }" ({ "{") (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" (identifier "local_c4") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" (identifier "local_c4") (. ".") (field_identifier "__value")) (= "=") (cast_expression "(_union_27)0x0" (( "(") (type_descriptor "_union_27" (type_identifier "_union_27")) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (param_1 < pbVar5) {\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }\n      else {\n        local_c9 = true;\n      }" (if "if") (parenthesized_expression "(param_1 < pbVar5)" (( "(") (binary_expression "param_1 < pbVar5" (identifier "param_1") (< "<") (identifier "pbVar5")) () ")")) (compound_statement "{\n        local_b8 = param_1;\n        do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);\n        local_c9 = true;\n        if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }\n      }" ({ "{") (expression_statement "local_b8 = param_1;" (assignment_expression "local_b8 = param_1" (identifier "local_b8") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        } while (local_b8 < pbVar5);" (do "do") (compound_statement "{\n          local_bc = 0;\n          if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = 1;\n          if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }\n          local_b8 = local_b8 + local_b0;\n          local_bc = 0;\n        }" ({ "{") (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar1) {\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\nLAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }" ({ "{") (labeled_statement "LAB_00103ba8:\n            sVar6 = __ctype_get_mb_cur_max();" (statement_identifier "LAB_00103ba8") (: ":") (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" (identifier "sVar6") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" (identifier "uVar4") (= "=") (call_expression "FUN_00104889(local_b8,sVar6)" (identifier "FUN_00104889") (argument_list "(local_b8,sVar6)" (( "(") (identifier "local_b8") (, ",") (identifier "sVar6") () ")")))) (; ";")) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "local_b0") (= "=") (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "FUN_00105ccf") (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" (( "(") (identifier "local_a4") (, ",") (identifier "pbVar10") (, ",") (identifier "uVar4") (, ",") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (if "if") (parenthesized_expression "(local_b0 == -1)" (( "(") (binary_expression "local_b0 == -1" (identifier "local_b0") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              local_b0 = 1;\n              local_a8 = 0;\n            }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (else "else") (if_statement "if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (if "if") (parenthesized_expression "(local_b0 == -2)" (( "(") (binary_expression "local_b0 == -2" (identifier "local_b0") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }" ({ "{") (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (do_statement "do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);" (do "do") (compound_statement "{\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              }" ({ "{") (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" (identifier "bVar12") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" (identifier "local_b0") (= "=") (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (else "else") (compound_statement "{\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" ({ "{") (if_statement "if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" (if "if") (parenthesized_expression "(local_b0 == 0)" (( "(") (binary_expression "local_b0 == 0" (identifier "local_b0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" (if "if") (parenthesized_expression "(*local_b8 != 0)" (( "(") (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" ({ "{") (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (( "(") (string_literal ""*iter->cur.ptr == \'\\0\'"" (" """) (string_content "*iter->cur.ptr == ") (escape_sequence "\'") (escape_sequence "\\") (string_content "0") (escape_sequence "\'") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb2") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" (if "if") (parenthesized_expression "(local_a4[0] != 0)" (( "(") (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" ({ "{") (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (( "(") (string_literal ""iter->cur.wc == 0"" (" """) (string_content "iter->cur.wc == 0") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb3") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n                bVar1 = false;\n              }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                bVar1 = false;\n              }" ({ "{") (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (} "}"))) (} "}")))))) (} "}")) (else_clause "else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" (else "else") (compound_statement "{\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" ({ "{") (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }" (if "if") (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0)" (( "(") (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (* "*") (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (( "(") (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" (& "&") (identifier "DAT_00109ea0")) (+ "+") (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*local_b8 >> 5)" (( "(") (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*local_b8 & 0x1f)" (( "(") (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103ba8;\n            }" ({ "{") (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" ({ "{") (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (( "(") (string_literal ""mbsinit (&iter->state)"" (" """) (string_content "mbsinit (&iter->state)") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0x96") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_00103ba8;" (goto "goto") (statement_identifier "LAB_00103ba8") (; ";")) (} "}"))) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" (( "(") (identifier "wint_t") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (identifier "local_b8"))) (; ";")) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "local_bc = 1;" (assignment_expression "local_bc = 1" (identifier "local_bc") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n            abort();\n          }" (if "if") (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" (( "(") (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" (( "(") (binary_expression "local_a8 != 0" (identifier "local_a8") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_a4[0] == 0)" (( "(") (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n            abort();\n          }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_b8 = local_b8 + local_b0;" (assignment_expression "local_b8 = local_b8 + local_b0" (identifier "local_b8") (= "=") (binary_expression "local_b8 + local_b0" (identifier "local_b8") (+ "+") (identifier "local_b0"))) (; ";")) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_b8 < pbVar5)" (( "(") (binary_expression "local_b8 < pbVar5" (identifier "local_b8") (< "<") (identifier "pbVar5")) () ")")) (; ";")) (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" (identifier "local_c9") (= "=") (true "true")) (; ";")) (if_statement "if (local_a8 != 0) {\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }" (if "if") (parenthesized_expression "(local_a8 != 0)" (( "(") (binary_expression "local_a8 != 0" (identifier "local_a8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar3 = iswalnum(local_a4[0]);\n          local_c9 = iVar3 == 0;\n        }" ({ "{") (expression_statement "iVar3 = iswalnum(local_a4[0]);" (assignment_expression "iVar3 = iswalnum(local_a4[0])" (identifier "iVar3") (= "=") (call_expression "iswalnum(local_a4[0])" (identifier "iswalnum") (argument_list "(local_a4[0])" (( "(") (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) () ")")))) (; ";")) (expression_statement "local_c9 = iVar3 == 0;" (assignment_expression "local_c9 = iVar3 == 0" (identifier "local_c9") (= "=") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        local_c9 = true;\n      }" (else "else") (compound_statement "{\n        local_c9 = true;\n      }" ({ "{") (expression_statement "local_c9 = true;" (assignment_expression "local_c9 = true" (identifier "local_c9") (= "=") (true "true")) (; ";")) (} "}")))) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" (identifier "local_c4") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" (identifier "local_c4") (. ".") (field_identifier "__value")) (= "=") (cast_expression "(_union_27)0x0" (( "(") (type_descriptor "_union_27" (type_identifier "_union_27")) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_88 = '\0';" (assignment_expression "local_88 = '\0'" (identifier "local_88") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_84.__count = 0;" (assignment_expression "local_84.__count = 0" (field_expression "local_84.__count" (identifier "local_84") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_84.__value = (_union_27)0x0;" (assignment_expression "local_84.__value = (_union_27)0x0" (field_expression "local_84.__value" (identifier "local_84") (. ".") (field_identifier "__value")) (= "=") (cast_expression "(_union_27)0x0" (( "(") (type_descriptor "_union_27" (type_identifier "_union_27")) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" (identifier "local_b8") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "local_78 = __ptr;" (assignment_expression "local_78 = __ptr" (identifier "local_78") (= "=") (identifier "__ptr")) (; ";")) (do_statement "do {\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      } while( true );" (do "do") (compound_statement "{\n        local_7c = 0;\n        local_bc = '\0';\n        if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }\n        bVar11 = local_68;\n        local_7c = 1;\n        uVar2 = local_7c;\n        local_7c = 1;\n        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;\n        local_7c = uVar2;\n        if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }\n        if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }\n        local_b8 = local_b8 + local_b0;\n        local_78 = local_78 + local_70;\n      }" ({ "{") (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_bc = '\0';" (assignment_expression "local_bc = '\0'" (identifier "local_bc") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (local_88 == '\0') {\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }\n        else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" (if "if") (parenthesized_expression "(local_88 == '\0')" (( "(") (binary_expression "local_88 == '\0'" (identifier "local_88") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }\n          local_70 = 1;\n          local_64[0] = (int)(char)*local_78;\n          local_68 = 1;\n        }" ({ "{") (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0) {\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }" (if "if") (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0)" (( "(") (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==\n              0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" (* "*") (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4)" (( "(") (binary_expression "&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4" (pointer_expression "&DAT_00109ea0" (& "&") (identifier "DAT_00109ea0")) (+ "+") (binary_expression "(ulong)(*local_78 >> 5) * 4" (call_expression "(ulong)(*local_78 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*local_78 >> 5)" (( "(") (binary_expression "*local_78 >> 5" (pointer_expression "*local_78" (* "*") (identifier "local_78")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*local_78 & 0x1f)" (( "(") (binary_expression "*local_78 & 0x1f" (pointer_expression "*local_78" (* "*") (identifier "local_78")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }\n            local_88 = '\x01';\n            goto LAB_00103fc8;\n          }" ({ "{") (expression_statement "iVar3 = mbsinit(&local_84);" (assignment_expression "iVar3 = mbsinit(&local_84)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_84)" (identifier "mbsinit") (argument_list "(&local_84)" (( "(") (pointer_expression "&local_84" (& "&") (identifier "local_84")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n            }" ({ "{") (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (( "(") (string_literal ""mbsinit (&iter->state)"" (" """) (string_content "mbsinit (&iter->state)") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0x96") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "local_88 = '\x01';" (assignment_expression "local_88 = '\x01'" (identifier "local_88") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (goto_statement "goto LAB_00103fc8;" (goto "goto") (statement_identifier "LAB_00103fc8") (; ";")) (} "}"))) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" (identifier "local_70") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_64[0] = (int)(char)*local_78;" (assignment_expression "local_64[0] = (int)(char)*local_78" (subscript_expression "local_64[0]" (identifier "local_64") ([ "[") (number_literal "0") (] "]")) (= "=") (cast_expression "(int)(char)*local_78" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*local_78" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*local_78" (* "*") (identifier "local_78"))))) (; ";")) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" (identifier "local_68") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" (else "else") (compound_statement "{\nLAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();\n          pbVar10 = local_78;\n          uVar4 = FUN_00104889(local_78,sVar6);\n          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);\n          if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }\n        }" ({ "{") (labeled_statement "LAB_00103fc8:\n          sVar6 = __ctype_get_mb_cur_max();" (statement_identifier "LAB_00103fc8") (: ":") (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" (identifier "sVar6") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar10 = local_78;" (assignment_expression "pbVar10 = local_78" (identifier "pbVar10") (= "=") (identifier "local_78")) (; ";")) (expression_statement "uVar4 = FUN_00104889(local_78,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_78,sVar6)" (identifier "uVar4") (= "=") (call_expression "FUN_00104889(local_78,sVar6)" (identifier "FUN_00104889") (argument_list "(local_78,sVar6)" (( "(") (identifier "local_78") (, ",") (identifier "sVar6") () ")")))) (; ";")) (expression_statement "local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);" (assignment_expression "local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84)" (identifier "local_70") (= "=") (call_expression "FUN_00105ccf(local_64,pbVar10,uVar4,&local_84)" (identifier "FUN_00105ccf") (argument_list "(local_64,pbVar10,uVar4,&local_84)" (( "(") (identifier "local_64") (, ",") (identifier "pbVar10") (, ",") (identifier "uVar4") (, ",") (pointer_expression "&local_84" (& "&") (identifier "local_84")) () ")")))) (; ";")) (if_statement "if (local_70 == -1) {\n            local_70 = 1;\n            local_68 = 0;\n          }\n          else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" (if "if") (parenthesized_expression "(local_70 == -1)" (( "(") (binary_expression "local_70 == -1" (identifier "local_70") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            local_70 = 1;\n            local_68 = 0;\n          }" ({ "{") (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" (identifier "local_70") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" (else "else") (if_statement "if (local_70 == -2) {\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }\n          else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" (if "if") (parenthesized_expression "(local_70 == -2)" (( "(") (binary_expression "local_70 == -2" (identifier "local_70") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n            uVar8 = 0xffffffffffffffff;\n            pbVar10 = local_78;\n            do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);\n            local_70 = ~uVar8 - 1;\n            local_68 = 0;\n          }" ({ "{") (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar10 = local_78;" (assignment_expression "pbVar10 = local_78" (identifier "pbVar10") (= "=") (identifier "local_78")) (; ";")) (do_statement "do {\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            } while (bVar12 != 0);" (do "do") (compound_statement "{\n              if (uVar8 == 0) break;\n              uVar8 = uVar8 - 1;\n              bVar12 = *pbVar10;\n              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n            }" ({ "{") (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" (identifier "bVar12") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_70 = ~uVar8 - 1;" (assignment_expression "local_70 = ~uVar8 - 1" (identifier "local_70") (= "=") (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" (else "else") (compound_statement "{\n            if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }\n            local_68 = 1;\n            iVar3 = mbsinit(&local_84);\n            if (iVar3 != 0) {\n              local_88 = '\0';\n            }\n          }" ({ "{") (if_statement "if (local_70 == 0) {\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" (if "if") (parenthesized_expression "(local_70 == 0)" (( "(") (binary_expression "local_70 == 0" (identifier "local_70") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              local_70 = 1;\n              if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }\n              if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }\n            }" ({ "{") (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" (identifier "local_70") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*local_78 != 0) {\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" (if "if") (parenthesized_expression "(*local_78 != 0)" (( "(") (binary_expression "*local_78 != 0" (pointer_expression "*local_78" (* "*") (identifier "local_78")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n              }" ({ "{") (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (( "(") (string_literal ""*iter->cur.ptr == \'\\0\'"" (" """) (string_content "*iter->cur.ptr == ") (escape_sequence "\'") (escape_sequence "\\") (string_content "0") (escape_sequence "\'") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb2") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_64[0] != 0) {\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" (if "if") (parenthesized_expression "(local_64[0] != 0)" (( "(") (binary_expression "local_64[0] != 0" (subscript_expression "local_64[0]" (identifier "local_64") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n              }" ({ "{") (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (( "(") (string_literal ""iter->cur.wc == 0"" (" """) (string_content "iter->cur.wc == 0") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb3") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_68 = 1;" (assignment_expression "local_68 = 1" (identifier "local_68") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = mbsinit(&local_84);" (assignment_expression "iVar3 = mbsinit(&local_84)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_84)" (identifier "mbsinit") (argument_list "(&local_84)" (( "(") (pointer_expression "&local_84" (& "&") (identifier "local_84")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n              local_88 = '\0';\n            }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              local_88 = '\0';\n            }" ({ "{") (expression_statement "local_88 = '\0';" (assignment_expression "local_88 = '\0'" (identifier "local_88") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}"))) (} "}")))))) (} "}")))) (expression_statement "bVar11 = local_68;" (assignment_expression "bVar11 = local_68" (identifier "bVar11") (= "=") (identifier "local_68")) (; ";")) (expression_statement "local_7c = 1;" (assignment_expression "local_7c = 1" (identifier "local_7c") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar2 = local_7c;" (assignment_expression "uVar2 = local_7c" (identifier "uVar2") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "local_7c = 1;" (assignment_expression "local_7c = 1" (identifier "local_7c") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;" (if "if") (parenthesized_expression "((local_68 != 0) && (local_64[0] == 0))" (( "(") (binary_expression "(local_68 != 0) && (local_64[0] == 0)" (parenthesized_expression "(local_68 != 0)" (( "(") (binary_expression "local_68 != 0" (identifier "local_68") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_64[0] == 0)" (( "(") (binary_expression "local_64[0] == 0" (subscript_expression "local_64[0]" (identifier "local_64") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_001040e2;" (goto "goto") (statement_identifier "LAB_001040e2") (; ";"))) (expression_statement "local_7c = uVar2;" (assignment_expression "local_7c = uVar2" (identifier "local_7c") (= "=") (identifier "uVar2")) (; ";")) (if_statement "if (local_bc == '\0') {\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }" (if "if") (parenthesized_expression "(local_bc == '\0')" (( "(") (binary_expression "local_bc == '\0'" (identifier "local_bc") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }\n          local_bc = '\x01';\n        }" ({ "{") (if_statement "if (bVar1) {\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }\n          else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\nLAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();\n            pbVar10 = local_b8;\n            uVar4 = FUN_00104889(local_b8,sVar6);\n            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n            if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }\n          }" ({ "{") (labeled_statement "LAB_00103db9:\n            sVar6 = __ctype_get_mb_cur_max();" (statement_identifier "LAB_00103db9") (: ":") (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" (identifier "sVar6") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" (identifier "uVar4") (= "=") (call_expression "FUN_00104889(local_b8,sVar6)" (identifier "FUN_00104889") (argument_list "(local_b8,sVar6)" (( "(") (identifier "local_b8") (, ",") (identifier "sVar6") () ")")))) (; ";")) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "local_b0") (= "=") (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "FUN_00105ccf") (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" (( "(") (identifier "local_a4") (, ",") (identifier "pbVar10") (, ",") (identifier "uVar4") (, ",") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (local_b0 == -1) {\n              local_b0 = 1;\n              local_a8 = 0;\n            }\n            else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (if "if") (parenthesized_expression "(local_b0 == -1)" (( "(") (binary_expression "local_b0 == -1" (identifier "local_b0") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              local_b0 = 1;\n              local_a8 = 0;\n            }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (else "else") (if_statement "if (local_b0 == -2) {\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }\n            else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (if "if") (parenthesized_expression "(local_b0 == -2)" (( "(") (binary_expression "local_b0 == -2" (identifier "local_b0") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n              uVar8 = 0xffffffffffffffff;\n              pbVar10 = local_b8;\n              do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);\n              local_b0 = ~uVar8 - 1;\n              local_a8 = 0;\n            }" ({ "{") (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (do_statement "do {\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              } while (bVar12 != 0);" (do "do") (compound_statement "{\n                if (uVar8 == 0) break;\n                uVar8 = uVar8 - 1;\n                bVar12 = *pbVar10;\n                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n              }" ({ "{") (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" (identifier "bVar12") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" (identifier "local_b0") (= "=") (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" (else "else") (compound_statement "{\n              if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }\n              local_a8 = 1;\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 != 0) {\n                bVar1 = false;\n              }\n            }" ({ "{") (if_statement "if (local_b0 == 0) {\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" (if "if") (parenthesized_expression "(local_b0 == 0)" (( "(") (binary_expression "local_b0 == 0" (identifier "local_b0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                local_b0 = 1;\n                if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }\n                if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }\n              }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*local_b8 != 0) {\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" (if "if") (parenthesized_expression "(*local_b8 != 0)" (( "(") (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n                }" ({ "{") (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (( "(") (string_literal ""*iter->cur.ptr == \'\\0\'"" (" """) (string_content "*iter->cur.ptr == ") (escape_sequence "\'") (escape_sequence "\\") (string_content "0") (escape_sequence "\'") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb2") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_a4[0] != 0) {\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" (if "if") (parenthesized_expression "(local_a4[0] != 0)" (( "(") (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n                }" ({ "{") (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (( "(") (string_literal ""iter->cur.wc == 0"" (" """) (string_content "iter->cur.wc == 0") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb3") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) {\n                bVar1 = false;\n              }" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                bVar1 = false;\n              }" ({ "{") (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (} "}"))) (} "}")))))) (} "}")) (else_clause "else {\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" (else "else") (compound_statement "{\n            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }\n            local_b0 = 1;\n            local_a4[0] = (wint_t)(char)*local_b8;\n            local_a8 = 1;\n          }" ({ "{") (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0) {\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }" (if "if") (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0)" (( "(") (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)\n                == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (* "*") (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (( "(") (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" (& "&") (identifier "DAT_00109ea0")) (+ "+") (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*local_b8 >> 5)" (( "(") (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*local_b8 & 0x1f)" (( "(") (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar3 = mbsinit(&local_c4);\n              if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }\n              bVar1 = true;\n              goto LAB_00103db9;\n            }" ({ "{") (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n              }" ({ "{") (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (( "(") (string_literal ""mbsinit (&iter->state)"" (" """) (string_content "mbsinit (&iter->state)") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0x96") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_00103db9;" (goto "goto") (statement_identifier "LAB_00103db9") (; ";")) (} "}"))) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" (( "(") (identifier "wint_t") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (identifier "local_b8"))) (; ";")) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" (identifier "local_bc") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (} "}"))) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) {\n                    \n          abort();\n        }" (if "if") (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" (( "(") (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" (( "(") (binary_expression "local_a8 != 0" (identifier "local_a8") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_a4[0] == 0)" (( "(") (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n          abort();\n        }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_b8 = local_b8 + local_b0;" (assignment_expression "local_b8 = local_b8 + local_b0" (identifier "local_b8") (= "=") (binary_expression "local_b8 + local_b0" (identifier "local_b8") (+ "+") (identifier "local_b0"))) (; ";")) (expression_statement "local_78 = local_78 + local_70;" (assignment_expression "local_78 = local_78 + local_70" (identifier "local_78") (= "=") (binary_expression "local_78 + local_70" (identifier "local_78") (+ "+") (identifier "local_70"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (param_1 < pbVar5) {\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }\n    else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" (if "if") (parenthesized_expression "(param_1 < pbVar5)" (( "(") (binary_expression "param_1 < pbVar5" (identifier "param_1") (< "<") (identifier "pbVar5")) () ")")) (compound_statement "{\n      ppuVar7 = __ctype_b_loc();\n      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      bVar9 = 1;\n      if (bVar11 != 0) goto LAB_001044ac;\n    }" ({ "{") (expression_statement "ppuVar7 = __ctype_b_loc();" (assignment_expression "ppuVar7 = __ctype_b_loc()" (identifier "ppuVar7") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;" (assignment_expression "bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1" (identifier "bVar12") (= "=") (binary_expression "((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1)" (( "(") (binary_expression "(byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1" (call_expression "(byte)((*ppuVar7)[pbVar5[-1]] >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((*ppuVar7)[pbVar5[-1]] >> 3)" (( "(") (binary_expression "(*ppuVar7)[pbVar5[-1]] >> 3" (subscript_expression "(*ppuVar7)[pbVar5[-1]]" (parenthesized_expression "(*ppuVar7)" (( "(") (pointer_expression "*ppuVar7" (* "*") (identifier "ppuVar7")) () ")")) ([ "[") (subscript_expression "pbVar5[-1]" (identifier "pbVar5") ([ "[") (number_literal "-1") (] "]")) (] "]")) (>> ">>") (number_literal "3")) () ")"))) (^ "^") (number_literal "1")) () ")")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" (identifier "pbVar10") (= "=") (identifier "__ptr")) (; ";")) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);" (do "do") (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar11 = *pbVar10;" (assignment_expression "bVar11 = *pbVar10" (identifier "bVar11") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11 != 0)" (( "(") (binary_expression "bVar11 != 0" (identifier "bVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "bVar11 = pbVar5[~uVar8 - 1];" (assignment_expression "bVar11 = pbVar5[~uVar8 - 1]" (identifier "bVar11") (= "=") (subscript_expression "pbVar5[~uVar8 - 1]" (identifier "pbVar5") ([ "[") (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (- "-") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "bVar9 = 1;" (assignment_expression "bVar9 = 1" (identifier "bVar9") (= "=") (number_literal "1")) (; ";")) (if_statement "if (bVar11 != 0) goto LAB_001044ac;" (if "if") (parenthesized_expression "(bVar11 != 0)" (( "(") (binary_expression "bVar11 != 0" (identifier "bVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001044ac;" (goto "goto") (statement_identifier "LAB_001044ac") (; ";"))) (} "}")) (else_clause "else {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" (else "else") (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = __ptr;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      bVar11 = pbVar5[~uVar8 - 1];\n      if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }\n      bVar12 = 1;\nLAB_001044ac:\n      ppuVar7 = __ctype_b_loc();\n      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;\n    }" ({ "{") (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar10 = __ptr;" (assignment_expression "pbVar10 = __ptr" (identifier "pbVar10") (= "=") (identifier "__ptr")) (; ";")) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);" (do "do") (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" (identifier "bVar12") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "bVar11 = pbVar5[~uVar8 - 1];" (assignment_expression "bVar11 = pbVar5[~uVar8 - 1]" (identifier "bVar11") (= "=") (subscript_expression "pbVar5[~uVar8 - 1]" (identifier "pbVar5") ([ "[") (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (- "-") (number_literal "1")) (] "]"))) (; ";")) (if_statement "if (bVar11 == 0) {\n        bVar12 = 1;\n        goto LAB_00104442;\n      }" (if "if") (parenthesized_expression "(bVar11 == 0)" (( "(") (binary_expression "bVar11 == 0" (identifier "bVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        bVar12 = 1;\n        goto LAB_00104442;\n      }" ({ "{") (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" (identifier "bVar12") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00104442;" (goto "goto") (statement_identifier "LAB_00104442") (; ";")) (} "}"))) (expression_statement "bVar12 = 1;" (assignment_expression "bVar12 = 1" (identifier "bVar12") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_001044ac:\n      ppuVar7 = __ctype_b_loc();" (statement_identifier "LAB_001044ac") (: ":") (expression_statement "ppuVar7 = __ctype_b_loc();" (assignment_expression "ppuVar7 = __ctype_b_loc()" (identifier "ppuVar7") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;" (assignment_expression "bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1" (identifier "bVar9") (= "=") (binary_expression "((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppuVar7)[bVar11] >> 3) ^ 1)" (( "(") (binary_expression "(byte)((*ppuVar7)[bVar11] >> 3) ^ 1" (call_expression "(byte)((*ppuVar7)[bVar11] >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "((*ppuVar7)[bVar11] >> 3)" (( "(") (binary_expression "(*ppuVar7)[bVar11] >> 3" (subscript_expression "(*ppuVar7)[bVar11]" (parenthesized_expression "(*ppuVar7)" (( "(") (pointer_expression "*ppuVar7" (* "*") (identifier "ppuVar7")) () ")")) ([ "[") (identifier "bVar11") (] "]")) (>> ">>") (number_literal "3")) () ")"))) (^ "^") (number_literal "1")) () ")")) (& "&") (number_literal "1"))) (; ";")) (} "}")))) (expression_statement "bVar12 = bVar12 & bVar9;" (assignment_expression "bVar12 = bVar12 & bVar9" (identifier "bVar12") (= "=") (binary_expression "bVar12 & bVar9" (identifier "bVar12") (& "&") (identifier "bVar9"))) (; ";")) (if_statement "if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;" (if "if") (parenthesized_expression "((bVar12 != 0) || (*pbVar5 == 0))" (( "(") (binary_expression "(bVar12 != 0) || (*pbVar5 == 0)" (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*pbVar5 == 0)" (( "(") (binary_expression "*pbVar5 == 0" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00104442;" (goto "goto") (statement_identifier "LAB_00104442") (; ";"))) (expression_statement "param_1 = pbVar5 + 1;" (assignment_expression "param_1 = pbVar5 + 1" (identifier "param_1") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (labeled_statement "LAB_001040e2:\n  if (local_bc != '\0') goto LAB_0010412c;" (statement_identifier "LAB_001040e2") (: ":") (if_statement "if (local_bc != '\0') goto LAB_0010412c;" (if "if") (parenthesized_expression "(local_bc != '\0')" (( "(") (binary_expression "local_bc != '\0'" (identifier "local_bc") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_0010412c;" (goto "goto") (statement_identifier "LAB_0010412c") (; ";")))) (if_statement "if (bVar1) {\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\nLAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }" ({ "{") (labeled_statement "LAB_001041e7:\n    sVar6 = __ctype_get_mb_cur_max();" (statement_identifier "LAB_001041e7") (: ":") (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" (identifier "sVar6") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" (identifier "uVar4") (= "=") (call_expression "FUN_00104889(local_b8,sVar6)" (identifier "FUN_00104889") (argument_list "(local_b8,sVar6)" (( "(") (identifier "local_b8") (, ",") (identifier "sVar6") () ")")))) (; ";")) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "local_b0") (= "=") (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "FUN_00105ccf") (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" (( "(") (identifier "local_a4") (, ",") (identifier "pbVar10") (, ",") (identifier "uVar4") (, ",") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (if "if") (parenthesized_expression "(local_b0 == -1)" (( "(") (binary_expression "local_b0 == -1" (identifier "local_b0") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      local_b0 = 1;\n      local_a8 = 0;\n    }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (else "else") (if_statement "if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (if "if") (parenthesized_expression "(local_b0 == -2)" (( "(") (binary_expression "local_b0 == -2" (identifier "local_b0") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }" ({ "{") (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar12 != 0);" (do "do") (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar12 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar12 = *pbVar10;" (assignment_expression "bVar12 = *pbVar10" (identifier "bVar12") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" (identifier "local_b0") (= "=") (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (else "else") (compound_statement "{\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" ({ "{") (if_statement "if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" (if "if") (parenthesized_expression "(local_b0 == 0)" (( "(") (binary_expression "local_b0 == 0" (identifier "local_b0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" (if "if") (parenthesized_expression "(*local_b8 != 0)" (( "(") (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" ({ "{") (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (( "(") (string_literal ""*iter->cur.ptr == \'\\0\'"" (" """) (string_content "*iter->cur.ptr == ") (escape_sequence "\'") (escape_sequence "\\") (string_content "0") (escape_sequence "\'") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb2") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" (if "if") (parenthesized_expression "(local_a4[0] != 0)" (( "(") (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" ({ "{") (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (( "(") (string_literal ""iter->cur.wc == 0"" (" """) (string_content "iter->cur.wc == 0") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb3") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (expression_statement "mbsinit(&local_c4);" (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")"))) (; ";")) (} "}")))))) (} "}")) (else_clause "else {\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" (else "else") (compound_statement "{\n    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*local_b8;\n    local_a8 = 1;\n  }" ({ "{") (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }" (if "if") (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (* "*") (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4)" (( "(") (binary_expression "&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4" (pointer_expression "&DAT_00109ea0" (& "&") (identifier "DAT_00109ea0")) (+ "+") (binary_expression "(ulong)(*local_b8 >> 5) * 4" (call_expression "(ulong)(*local_b8 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*local_b8 >> 5)" (( "(") (binary_expression "*local_b8 >> 5" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*local_b8 & 0x1f)" (( "(") (binary_expression "*local_b8 & 0x1f" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = mbsinit(&local_c4);\n      if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }\n      goto LAB_001041e7;\n    }" ({ "{") (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n      }" ({ "{") (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (( "(") (string_literal ""mbsinit (&iter->state)"" (" """) (string_content "mbsinit (&iter->state)") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0x96") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_001041e7;" (goto "goto") (statement_identifier "LAB_001041e7") (; ";")) (} "}"))) (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a4[0] = (wint_t)(char)*local_b8;" (assignment_expression "local_a4[0] = (wint_t)(char)*local_b8" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "(wint_t)(char)*local_b8" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" (( "(") (identifier "wint_t") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (identifier "local_b8"))) (; ";")) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" (identifier "local_bc") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (labeled_statement "LAB_0010412c:\n  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" (statement_identifier "LAB_0010412c") (: ":") (if_statement "if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     ) {\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" (if "if") (parenthesized_expression "(((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)\n     )" (( "(") (binary_expression "((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)" (parenthesized_expression "((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0))" (( "(") (binary_expression "(local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)" (parenthesized_expression "(local_a8 == 0)" (( "(") (binary_expression "local_a8 == 0" (identifier "local_a8") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar12 = local_a8, local_a4[0] != 0)" (( "(") (comma_expression "bVar12 = local_a8, local_a4[0] != 0" (assignment_expression "bVar12 = local_a8" (identifier "bVar12") (= "=") (identifier "local_a8")) (, ",") (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar12 = bVar11, local_a8 != 0)" (( "(") (comma_expression "bVar12 = bVar11, local_a8 != 0" (assignment_expression "bVar12 = bVar11" (identifier "bVar12") (= "=") (identifier "bVar11")) (, ",") (binary_expression "local_a8 != 0" (identifier "local_a8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    iVar3 = iswalnum(local_a4[0]);\n    bVar12 = iVar3 == 0;\n  }" ({ "{") (expression_statement "iVar3 = iswalnum(local_a4[0]);" (assignment_expression "iVar3 = iswalnum(local_a4[0])" (identifier "iVar3") (= "=") (call_expression "iswalnum(local_a4[0])" (identifier "iswalnum") (argument_list "(local_a4[0])" (( "(") (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) () ")")))) (; ";")) (expression_statement "bVar12 = iVar3 == 0;" (assignment_expression "bVar12 = iVar3 == 0" (identifier "bVar12") (= "=") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) (; ";")) (} "}")))) (expression_statement "bVar12 = local_c9 & bVar12;" (assignment_expression "bVar12 = local_c9 & bVar12" (identifier "bVar12") (= "=") (binary_expression "local_c9 & bVar12" (identifier "local_c9") (& "&") (identifier "bVar12"))) (; ";")) (if_statement "if (bVar12 != 0) goto LAB_00104442;" (if "if") (parenthesized_expression "(bVar12 != 0)" (( "(") (binary_expression "bVar12 != 0" (identifier "bVar12") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00104442;" (goto "goto") (statement_identifier "LAB_00104442") (; ";"))) (expression_statement "local_c4.__count = 0;" (assignment_expression "local_c4.__count = 0" (field_expression "local_c4.__count" (identifier "local_c4") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_c4.__value = (_union_27)0x0;" (assignment_expression "local_c4.__value = (_union_27)0x0" (field_expression "local_c4.__value" (identifier "local_c4") (. ".") (field_identifier "__value")) (= "=") (cast_expression "(_union_27)0x0" (( "(") (type_descriptor "_union_27" (type_identifier "_union_27")) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_bc = 0;" (assignment_expression "local_bc = 0" (identifier "local_bc") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }\n  else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" (if "if") (parenthesized_expression "((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1" (binary_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f)" (pointer_expression "*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" (* "*") (cast_expression "(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4)" (( "(") (binary_expression "&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4" (pointer_expression "&DAT_00109ea0" (& "&") (identifier "DAT_00109ea0")) (+ "+") (binary_expression "(ulong)(*pbVar5 >> 5) * 4" (call_expression "(ulong)(*pbVar5 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*pbVar5 >> 5)" (( "(") (binary_expression "*pbVar5 >> 5" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(*pbVar5 & 0x1f)" (( "(") (binary_expression "*pbVar5 & 0x1f" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_b8 = pbVar5;\n    iVar3 = mbsinit(&local_c4);\n    if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }\n    sVar6 = __ctype_get_mb_cur_max();\n    pbVar10 = local_b8;\n    uVar4 = FUN_00104889(local_b8,sVar6);\n    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);\n    if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }\n  }" ({ "{") (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" (identifier "local_b8") (= "=") (identifier "pbVar5")) (; ";")) (expression_statement "iVar3 = mbsinit(&local_c4);" (assignment_expression "iVar3 = mbsinit(&local_c4)" (identifier "iVar3") (= "=") (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");\n    }" ({ "{") (expression_statement "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");" (call_expression "__assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next")" (( "(") (string_literal ""mbsinit (&iter->state)"" (" """) (string_content "mbsinit (&iter->state)") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0x96") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "sVar6 = __ctype_get_mb_cur_max();" (assignment_expression "sVar6 = __ctype_get_mb_cur_max()" (identifier "sVar6") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (expression_statement "uVar4 = FUN_00104889(local_b8,sVar6);" (assignment_expression "uVar4 = FUN_00104889(local_b8,sVar6)" (identifier "uVar4") (= "=") (call_expression "FUN_00104889(local_b8,sVar6)" (identifier "FUN_00104889") (argument_list "(local_b8,sVar6)" (( "(") (identifier "local_b8") (, ",") (identifier "sVar6") () ")")))) (; ";")) (expression_statement "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);" (assignment_expression "local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "local_b0") (= "=") (call_expression "FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4)" (identifier "FUN_00105ccf") (argument_list "(local_a4,pbVar10,uVar4,&local_c4)" (( "(") (identifier "local_a4") (, ",") (identifier "pbVar10") (, ",") (identifier "uVar4") (, ",") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")")))) (; ";")) (if_statement "if (local_b0 == -1) {\n      local_b0 = 1;\n      local_a8 = 0;\n    }\n    else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (if "if") (parenthesized_expression "(local_b0 == -1)" (( "(") (binary_expression "local_b0 == -1" (identifier "local_b0") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      local_b0 = 1;\n      local_a8 = 0;\n    }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (else "else") (if_statement "if (local_b0 == -2) {\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }\n    else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (if "if") (parenthesized_expression "(local_b0 == -2)" (( "(") (binary_expression "local_b0 == -2" (identifier "local_b0") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n      uVar8 = 0xffffffffffffffff;\n      pbVar10 = local_b8;\n      do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);\n      local_b0 = ~uVar8 - 1;\n      local_a8 = 0;\n    }" ({ "{") (expression_statement "uVar8 = 0xffffffffffffffff;" (assignment_expression "uVar8 = 0xffffffffffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pbVar10 = local_b8;" (assignment_expression "pbVar10 = local_b8" (identifier "pbVar10") (= "=") (identifier "local_b8")) (; ";")) (do_statement "do {\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      } while (bVar11 != 0);" (do "do") (compound_statement "{\n        if (uVar8 == 0) break;\n        uVar8 = uVar8 - 1;\n        bVar11 = *pbVar10;\n        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar8 = uVar8 - 1;" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "bVar11 = *pbVar10;" (assignment_expression "bVar11 = *pbVar10" (identifier "bVar11") (= "=") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (ulong)bVar13 * -2 + 1" (binary_expression "pbVar10 + (ulong)bVar13 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(ulong)bVar13 * -2" (cast_expression "(ulong)bVar13" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar13")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11 != 0)" (( "(") (binary_expression "bVar11 != 0" (identifier "bVar11") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "local_b0 = ~uVar8 - 1;" (assignment_expression "local_b0 = ~uVar8 - 1" (identifier "local_b0") (= "=") (binary_expression "~uVar8 - 1" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (- "-") (number_literal "1"))) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" (else "else") (compound_statement "{\n      if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }\n      local_a8 = 1;\n      mbsinit(&local_c4);\n    }" ({ "{") (if_statement "if (local_b0 == 0) {\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" (if "if") (parenthesized_expression "(local_b0 == 0)" (( "(") (binary_expression "local_b0 == 0" (identifier "local_b0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_b0 = 1;\n        if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }\n        if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }\n      }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*local_b8 != 0) {\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" (if "if") (parenthesized_expression "(*local_b8 != 0)" (( "(") (binary_expression "*local_b8 != 0" (pointer_expression "*local_b8" (* "*") (identifier "local_b8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");\n        }" ({ "{") (expression_statement "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");" (call_expression "__assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next")" (( "(") (string_literal ""*iter->cur.ptr == \'\\0\'"" (" """) (string_content "*iter->cur.ptr == ") (escape_sequence "\'") (escape_sequence "\\") (string_content "0") (escape_sequence "\'") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb2") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if (local_a4[0] != 0) {\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" (if "if") (parenthesized_expression "(local_a4[0] != 0)" (( "(") (binary_expression "local_a4[0] != 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    \n          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");\n        }" ({ "{") (expression_statement "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");" (call_expression "__assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (identifier "__assert_fail") (argument_list "("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next")" (( "(") (string_literal ""iter->cur.wc == 0"" (" """) (string_content "iter->cur.wc == 0") (" """)) (, ",") (string_literal ""mbuiter.h"" (" """) (string_content "mbuiter.h") (" """)) (, ",") (number_literal "0xb3") (, ",") (string_literal ""mbuiter_multi_next"" (" """) (string_content "mbuiter_multi_next") (" """)) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (expression_statement "mbsinit(&local_c4);" (call_expression "mbsinit(&local_c4)" (identifier "mbsinit") (argument_list "(&local_c4)" (( "(") (pointer_expression "&local_c4" (& "&") (identifier "local_c4")) () ")"))) (; ";")) (} "}")))))) (} "}")) (else_clause "else {\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" (else "else") (compound_statement "{\n    local_b0 = 1;\n    local_a4[0] = (wint_t)(char)*pbVar5;\n    local_a8 = 1;\n    local_b8 = pbVar5;\n  }" ({ "{") (expression_statement "local_b0 = 1;" (assignment_expression "local_b0 = 1" (identifier "local_b0") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_a4[0] = (wint_t)(char)*pbVar5;" (assignment_expression "local_a4[0] = (wint_t)(char)*pbVar5" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (= "=") (binary_expression "(wint_t)(char)*pbVar5" (call_expression "(wint_t)(char)" (parenthesized_expression "(wint_t)" (( "(") (identifier "wint_t") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (identifier "pbVar5"))) (; ";")) (expression_statement "local_a8 = 1;" (assignment_expression "local_a8 = 1" (identifier "local_a8") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_b8 = pbVar5;" (assignment_expression "local_b8 = pbVar5" (identifier "local_b8") (= "=") (identifier "pbVar5")) (; ";")) (} "}")))) (expression_statement "local_bc = '\x01';" (assignment_expression "local_bc = '\x01'" (identifier "local_bc") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (if_statement "if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;" (if "if") (parenthesized_expression "((local_a8 != 0) && (local_a4[0] == 0))" (( "(") (binary_expression "(local_a8 != 0) && (local_a4[0] == 0)" (parenthesized_expression "(local_a8 != 0)" (( "(") (binary_expression "local_a8 != 0" (identifier "local_a8") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_a4[0] == 0)" (( "(") (binary_expression "local_a4[0] == 0" (subscript_expression "local_a4[0]" (identifier "local_a4") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00104442;" (goto "goto") (statement_identifier "LAB_00104442") (; ";"))) (expression_statement "param_1 = pbVar5 + local_b0;" (assignment_expression "param_1 = pbVar5 + local_b0" (identifier "param_1") (= "=") (binary_expression "pbVar5 + local_b0" (identifier "pbVar5") (+ "+") (identifier "local_b0"))) (; ";")) (goto_statement "goto LAB_001044df;" (goto "goto") (statement_identifier "LAB_001044df") (; ";")) (} "}")))

type_1 function_1(char *var_10,char *sub)

{
  type_2 *pmVar1;
  char var_19;
  long var_4;
  type_1 _Var4;
  int var_13;
  char *needle;
  size_t sVar6;
  type_3 *var_7;
  size_t var_9;
  type_4 **ppuVar9;
  type_5 var_17;
  type_3 var_23;
  type_3 var_25;
  char *var_18;
  type_1 var_26;
  long var_1;
  type_3 bVar16;
  bool var_27;
  type_6 string_iter;
  type_6 tsub_iter;
  type_3 var_24;
  
  bVar16 = 0;
  var_4 = *(long *)(var_1 + 0x28);
  needle = var_2(sub,L'\x02');
LAB_001044df:
  do {
    if (*var_10 == 0) {
      var_26 = false;
LAB_00104442:
      var_3(needle);
      if (var_4 == *(long *)(var_1 + 0x28)) {
        return var_26;
      }
                    /* WARNING: Subroutine does not return */
      var_5();
    }
    var_7 = (type_3 *)var_6(var_10,needle);
    if (var_7 == (type_3 *)0x0) {
      var_26 = false;
      goto LAB_00104442;
    }
    var_9 = var_8();
    if (1 < var_9) {
      string_iter.in_shift = false;
      string_iter.state.__count = L'\0';
      string_iter.state.__value = (type_7)0x0;
      if (var_10 < var_7) {
        pmVar1 = &string_iter.state;
        string_iter.cur.ptr = var_10;
        do {
          string_iter.next_done = false;
          if (string_iter.in_shift == false) {
            if ((*(type_8 *)(var_11 + (type_5)((type_3)*string_iter.cur.ptr >> 5) * 4) >>
                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {
              var_13 = var_12((type_9 *)pmVar1);
              if (var_13 == 0) {
                    /* WARNING: Subroutine does not return */
                var_14("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              string_iter.in_shift = true;
              goto LAB_00103ba8;
            }
            string_iter.cur.bytes = 1;
            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;
            string_iter.cur.wc_valid = true;
          }
          else {
LAB_00103ba8:
            var_9 = var_8();
            var_18 = string_iter.cur.ptr;
            sVar6 = var_15(string_iter.cur.ptr,var_9);
            string_iter.cur.bytes = var_16(&string_iter.cur.wc,var_18,sVar6,pmVar1);
            if (string_iter.cur.bytes == 0xffffffffffffffff) {
              string_iter.cur.bytes = 1;
              string_iter.cur.wc_valid = false;
            }
            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
              var_17 = 0xffffffffffffffff;
              var_18 = string_iter.cur.ptr;
              do {
                if (var_17 == 0) break;
                var_17 = var_17 - 1;
                var_19 = *var_18;
                var_18 = var_18 + (type_5)bVar16 * -2 + 1;
              } while (var_19 != '\0');
              string_iter.cur.bytes = ~var_17 - 1;
              string_iter.cur.wc_valid = false;
            }
            else {
              if (string_iter.cur.bytes == 0) {
                string_iter.cur.bytes = 1;
                if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
                  var_14("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
                  var_14("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              string_iter.cur.wc_valid = true;
              var_13 = var_12((type_9 *)pmVar1);
              if (var_13 != 0) {
                string_iter.in_shift = false;
              }
            }
          }
          string_iter.next_done = true;
          if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {
                    /* WARNING: Subroutine does not return */
            var_20();
          }
          string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;
          string_iter.next_done = false;
        } while (string_iter.cur.ptr < var_7);
        var_27 = true;
        if (string_iter.cur.wc_valid != false) {
          var_13 = var_21(string_iter.cur.wc);
          var_27 = var_13 == 0;
        }
      }
      else {
        var_27 = true;
      }
      string_iter.in_shift = false;
      string_iter.state.__count = L'\0';
      string_iter.state.__value = (type_7)0x0;
      tsub_iter.in_shift = false;
      tsub_iter.state.__count = L'\0';
      tsub_iter.state.__value = (type_7)0x0;
      pmVar1 = &tsub_iter.state;
      string_iter.cur.ptr = (char *)var_7;
      tsub_iter.cur.ptr = needle;
      do {
        tsub_iter.next_done = false;
        string_iter.next_done = false;
        if (tsub_iter.in_shift == false) {
          if ((*(type_8 *)(var_11 + (type_5)((type_3)*tsub_iter.cur.ptr >> 5) * 4) >>
               (*tsub_iter.cur.ptr & 0x1fU) & 1) == 0) {
            var_13 = var_12((type_9 *)pmVar1);
            if (var_13 == 0) {
                    /* WARNING: Subroutine does not return */
              var_14("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
            }
            tsub_iter.in_shift = true;
            goto LAB_00103fc8;
          }
          tsub_iter.cur.bytes = 1;
          tsub_iter.cur.wc = (wchar_t)*tsub_iter.cur.ptr;
          tsub_iter.cur.wc_valid = true;
        }
        else {
LAB_00103fc8:
          var_9 = var_8();
          var_18 = tsub_iter.cur.ptr;
          sVar6 = var_15(tsub_iter.cur.ptr,var_9);
          tsub_iter.cur.bytes = var_16(&tsub_iter.cur.wc,var_18,sVar6,pmVar1);
          if (tsub_iter.cur.bytes == 0xffffffffffffffff) {
            tsub_iter.cur.bytes = 1;
            tsub_iter.cur.wc_valid = false;
          }
          else if (tsub_iter.cur.bytes == 0xfffffffffffffffe) {
            var_17 = 0xffffffffffffffff;
            var_18 = tsub_iter.cur.ptr;
            do {
              if (var_17 == 0) break;
              var_17 = var_17 - 1;
              var_19 = *var_18;
              var_18 = var_18 + (type_5)bVar16 * -2 + 1;
            } while (var_19 != '\0');
            tsub_iter.cur.bytes = ~var_17 - 1;
            tsub_iter.cur.wc_valid = false;
          }
          else {
            if (tsub_iter.cur.bytes == 0) {
              tsub_iter.cur.bytes = 1;
              if (*tsub_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
                var_14("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
              }
              if (tsub_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
                var_14("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
              }
            }
            tsub_iter.cur.wc_valid = true;
            var_13 = var_12((type_9 *)pmVar1);
            if (var_13 != 0) {
              tsub_iter.in_shift = false;
            }
          }
        }
        _Var4 = tsub_iter.cur.wc_valid;
        tsub_iter.next_done = true;
        var_26 = tsub_iter.next_done;
        tsub_iter.next_done = true;
        if ((tsub_iter.cur.wc_valid != false) && (tsub_iter.cur.wc == L'\0')) goto LAB_001040e2;
        tsub_iter.next_done = var_26;
        if (string_iter.next_done == false) {
          if (string_iter.in_shift == false) {
            if ((*(type_8 *)(var_11 + (type_5)((type_3)*string_iter.cur.ptr >> 5) * 4) >>
                 (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {
              var_13 = var_12((type_9 *)&string_iter.state);
              if (var_13 == 0) {
                    /* WARNING: Subroutine does not return */
                var_14("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              string_iter.in_shift = true;
              goto LAB_00103db9;
            }
            string_iter.cur.bytes = 1;
            string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;
            string_iter.cur.wc_valid = true;
          }
          else {
LAB_00103db9:
            var_9 = var_8();
            var_18 = string_iter.cur.ptr;
            sVar6 = var_15(string_iter.cur.ptr,var_9);
            string_iter.cur.bytes =
                 var_16(&string_iter.cur.wc,var_18,sVar6,&string_iter.state);
            if (string_iter.cur.bytes == 0xffffffffffffffff) {
              string_iter.cur.bytes = 1;
              string_iter.cur.wc_valid = false;
            }
            else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
              var_17 = 0xffffffffffffffff;
              var_18 = string_iter.cur.ptr;
              do {
                if (var_17 == 0) break;
                var_17 = var_17 - 1;
                var_19 = *var_18;
                var_18 = var_18 + (type_5)bVar16 * -2 + 1;
              } while (var_19 != '\0');
              string_iter.cur.bytes = ~var_17 - 1;
              string_iter.cur.wc_valid = false;
            }
            else {
              if (string_iter.cur.bytes == 0) {
                string_iter.cur.bytes = 1;
                if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
                  var_14("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
                  var_14("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              string_iter.cur.wc_valid = true;
              var_13 = var_12((type_9 *)&string_iter.state);
              if (var_13 != 0) {
                string_iter.in_shift = false;
              }
            }
          }
          string_iter.next_done = true;
        }
        if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) {
                    /* WARNING: Subroutine does not return */
          var_20();
        }
        string_iter.cur.ptr = string_iter.cur.ptr + string_iter.cur.bytes;
        tsub_iter.cur.ptr = tsub_iter.cur.ptr + tsub_iter.cur.bytes;
      } while( true );
    }
    if (var_10 < var_7) {
      ppuVar9 = var_22();
      var_24 = ((type_3)((*ppuVar9)[var_7[-1]] >> 3) ^ 1) & 1;
      var_17 = 0xffffffffffffffff;
      var_18 = needle;
      do {
        if (var_17 == 0) break;
        var_17 = var_17 - 1;
        var_19 = *var_18;
        var_18 = var_18 + (type_5)bVar16 * -2 + 1;
      } while (var_19 != '\0');
      var_23 = var_7[~var_17 - 1];
      var_25 = 1;
      if (var_23 != 0) goto LAB_001044ac;
    }
    else {
      var_17 = 0xffffffffffffffff;
      var_18 = needle;
      do {
        if (var_17 == 0) break;
        var_17 = var_17 - 1;
        var_19 = *var_18;
        var_18 = var_18 + (type_5)bVar16 * -2 + 1;
      } while (var_19 != '\0');
      var_23 = var_7[~var_17 - 1];
      if (var_23 == 0) {
        var_26 = true;
        goto LAB_00104442;
      }
      var_24 = 1;
LAB_001044ac:
      ppuVar9 = var_22();
      var_25 = ((type_3)((*ppuVar9)[var_23] >> 3) ^ 1) & 1;
    }
    var_26 = (type_1)(var_24 & var_25);
    if ((var_26 != false) || (*var_7 == 0)) goto LAB_00104442;
    var_10 = (char *)(var_7 + 1);
  } while( true );
LAB_001040e2:
  if (string_iter.next_done != false) goto LAB_0010412c;
  if (string_iter.in_shift == false) {
    if ((*(type_8 *)(var_11 + (type_5)((type_3)*string_iter.cur.ptr >> 5) * 4) >>
         (*string_iter.cur.ptr & 0x1fU) & 1) == 0) {
      var_13 = var_12((type_9 *)&string_iter.state);
      if (var_13 == 0) {
                    /* WARNING: Subroutine does not return */
        var_14("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
      }
      string_iter.in_shift = true;
      goto LAB_001041e7;
    }
    string_iter.cur.bytes = 1;
    string_iter.cur.wc = (wchar_t)*string_iter.cur.ptr;
    string_iter.cur.wc_valid = true;
  }
  else {
LAB_001041e7:
    var_9 = var_8();
    var_18 = string_iter.cur.ptr;
    sVar6 = var_15(string_iter.cur.ptr,var_9);
    string_iter.cur.bytes = var_16(&string_iter.cur.wc,var_18,sVar6,&string_iter.state);
    if (string_iter.cur.bytes == 0xffffffffffffffff) {
      string_iter.cur.bytes = 1;
      string_iter.cur.wc_valid = false;
    }
    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
      var_17 = 0xffffffffffffffff;
      var_18 = string_iter.cur.ptr;
      do {
        if (var_17 == 0) break;
        var_17 = var_17 - 1;
        var_19 = *var_18;
        var_18 = var_18 + (type_5)bVar16 * -2 + 1;
      } while (var_19 != '\0');
      string_iter.cur.bytes = ~var_17 - 1;
      string_iter.cur.wc_valid = false;
    }
    else {
      if (string_iter.cur.bytes == 0) {
        string_iter.cur.bytes = 1;
        if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
          var_14("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
          var_14("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      string_iter.cur.wc_valid = true;
      var_13 = var_12((type_9 *)&string_iter.state);
      if (var_13 != 0) {
        string_iter.in_shift = false;
      }
    }
  }
  string_iter.next_done = true;
LAB_0010412c:
  if (((string_iter.cur.wc_valid == false) ||
      (var_23 = string_iter.cur.wc_valid, string_iter.cur.wc != L'\0')) &&
     (var_23 = _Var4, string_iter.cur.wc_valid != false)) {
    var_13 = var_21(string_iter.cur.wc);
    var_23 = var_13 == 0;
  }
  var_26 = (type_1)(var_27 & var_23);
  if (var_26 != false) goto LAB_00104442;
  string_iter.in_shift = false;
  string_iter.state.__count = L'\0';
  string_iter.state.__value = (type_7)0x0;
  string_iter.next_done = false;
  if ((*(type_8 *)(var_11 + (type_5)(*var_7 >> 5) * 4) >> (*var_7 & 0x1f) & 1) == 0) {
    string_iter.cur.ptr = (char *)var_7;
    var_13 = var_12((type_9 *)&string_iter.state);
    if (var_13 == 0) {
                    /* WARNING: Subroutine does not return */
      var_14("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
    }
    string_iter.in_shift = true;
    var_9 = var_8();
    var_18 = string_iter.cur.ptr;
    sVar6 = var_15(string_iter.cur.ptr,var_9);
    string_iter.cur.bytes = var_16(&string_iter.cur.wc,var_18,sVar6,&string_iter.state);
    if (string_iter.cur.bytes == 0xffffffffffffffff) {
      string_iter.cur.bytes = 1;
      string_iter.cur.wc_valid = false;
    }
    else if (string_iter.cur.bytes == 0xfffffffffffffffe) {
      var_17 = 0xffffffffffffffff;
      var_18 = string_iter.cur.ptr;
      do {
        if (var_17 == 0) break;
        var_17 = var_17 - 1;
        var_19 = *var_18;
        var_18 = var_18 + (type_5)bVar16 * -2 + 1;
      } while (var_19 != '\0');
      string_iter.cur.bytes = ~var_17 - 1;
      string_iter.cur.wc_valid = false;
    }
    else {
      if (string_iter.cur.bytes == 0) {
        string_iter.cur.bytes = 1;
        if (*string_iter.cur.ptr != '\0') {
                    /* WARNING: Subroutine does not return */
          var_14("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (string_iter.cur.wc != L'\0') {
                    /* WARNING: Subroutine does not return */
          var_14("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      string_iter.cur.wc_valid = true;
      var_13 = var_12((type_9 *)&string_iter.state);
      if (var_13 != 0) {
        string_iter.in_shift = false;
      }
    }
  }
  else {
    string_iter.cur.bytes = 1;
    string_iter.cur.wc = (wchar_t)(char)*var_7;
    string_iter.cur.wc_valid = true;
    string_iter.cur.ptr = (char *)var_7;
  }
  string_iter.next_done = true;
  if ((string_iter.cur.wc_valid != false) && (string_iter.cur.wc == L'\0')) goto LAB_00104442;
  var_10 = (char *)(var_7 + string_iter.cur.bytes);
  goto LAB_001044df;
}


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

byte MASKED(byte *param_1,undefined8 param_2)

{
  bool bVar1;
  undefined1 uVar2;
  int iVar3;
  byte *__ptr;
  undefined8 uVar4;
  byte *pbVar5;
  size_t sVar6;
  ushort **ppuVar7;
  ulong uVar8;
  byte bVar9;
  byte *pbVar10;
  byte bVar11;
  byte bVar12;
  long in_FS_OFFSET;
  byte bVar13;
  bool local_c9;
  mbstate_t local_c4;
  char local_bc;
  byte *local_b8;
  long local_b0;
  byte local_a8;
  wint_t local_a4 [7];
  char local_88;
  mbstate_t local_84;
  undefined1 local_7c;
  byte *local_78;
  long local_70;
  byte local_68;
  int local_64 [9];
  long local_40;
  
  bVar13 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  __ptr = (byte *)FUN_001048bd(param_2,2);
LAB_001044df:
  do {
    if (*param_1 == 0) {
      bVar12 = 0;
LAB_00104442:
      free(__ptr);
      if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
        return bVar12;
      }
                    /* WARNING: Subroutine does not return */
      __stack_chk_fail();
    }
    pbVar5 = (byte *)FUN_00106a98(param_1,__ptr);
    if (pbVar5 == (byte *)0x0) {
      bVar12 = 0;
      goto LAB_00104442;
    }
    sVar6 = __ctype_get_mb_cur_max();
    if (1 < sVar6) {
      bVar1 = false;
      local_c4.__count = 0;
      local_c4.__value = (_union_27)0x0;
      if (param_1 < pbVar5) {
        local_b8 = param_1;
        do {
          local_bc = 0;
          if (bVar1) {
LAB_00103ba8:
            sVar6 = __ctype_get_mb_cur_max();
            pbVar10 = local_b8;
            uVar4 = FUN_00104889(local_b8,sVar6);
            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
            if (local_b0 == -1) {
              local_b0 = 1;
              local_a8 = 0;
            }
            else if (local_b0 == -2) {
              uVar8 = 0xffffffffffffffff;
              pbVar10 = local_b8;
              do {
                if (uVar8 == 0) break;
                uVar8 = uVar8 - 1;
                bVar12 = *pbVar10;
                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
              } while (bVar12 != 0);
              local_b0 = ~uVar8 - 1;
              local_a8 = 0;
            }
            else {
              if (local_b0 == 0) {
                local_b0 = 1;
                if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              local_a8 = 1;
              iVar3 = mbsinit(&local_c4);
              if (iVar3 != 0) {
                bVar1 = false;
              }
            }
          }
          else {
            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)
                == 0) {
              iVar3 = mbsinit(&local_c4);
              if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              bVar1 = true;
              goto LAB_00103ba8;
            }
            local_b0 = 1;
            local_a4[0] = (wint_t)(char)*local_b8;
            local_a8 = 1;
          }
          local_bc = 1;
          if ((local_a8 != 0) && (local_a4[0] == 0)) {
                    /* WARNING: Subroutine does not return */
            abort();
          }
          local_b8 = local_b8 + local_b0;
          local_bc = 0;
        } while (local_b8 < pbVar5);
        local_c9 = true;
        if (local_a8 != 0) {
          iVar3 = iswalnum(local_a4[0]);
          local_c9 = iVar3 == 0;
        }
      }
      else {
        local_c9 = true;
      }
      bVar1 = false;
      local_c4.__count = 0;
      local_c4.__value = (_union_27)0x0;
      local_88 = '\0';
      local_84.__count = 0;
      local_84.__value = (_union_27)0x0;
      local_b8 = pbVar5;
      local_78 = __ptr;
      do {
        local_7c = 0;
        local_bc = '\0';
        if (local_88 == '\0') {
          if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_78 >> 5) * 4) >> (*local_78 & 0x1f) & 1) ==
              0) {
            iVar3 = mbsinit(&local_84);
            if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
              __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
            }
            local_88 = '\x01';
            goto LAB_00103fc8;
          }
          local_70 = 1;
          local_64[0] = (int)(char)*local_78;
          local_68 = 1;
        }
        else {
LAB_00103fc8:
          sVar6 = __ctype_get_mb_cur_max();
          pbVar10 = local_78;
          uVar4 = FUN_00104889(local_78,sVar6);
          local_70 = FUN_00105ccf(local_64,pbVar10,uVar4,&local_84);
          if (local_70 == -1) {
            local_70 = 1;
            local_68 = 0;
          }
          else if (local_70 == -2) {
            uVar8 = 0xffffffffffffffff;
            pbVar10 = local_78;
            do {
              if (uVar8 == 0) break;
              uVar8 = uVar8 - 1;
              bVar12 = *pbVar10;
              pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
            } while (bVar12 != 0);
            local_70 = ~uVar8 - 1;
            local_68 = 0;
          }
          else {
            if (local_70 == 0) {
              local_70 = 1;
              if (*local_78 != 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
              }
              if (local_64[0] != 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
              }
            }
            local_68 = 1;
            iVar3 = mbsinit(&local_84);
            if (iVar3 != 0) {
              local_88 = '\0';
            }
          }
        }
        bVar11 = local_68;
        local_7c = 1;
        uVar2 = local_7c;
        local_7c = 1;
        if ((local_68 != 0) && (local_64[0] == 0)) goto LAB_001040e2;
        local_7c = uVar2;
        if (local_bc == '\0') {
          if (bVar1) {
LAB_00103db9:
            sVar6 = __ctype_get_mb_cur_max();
            pbVar10 = local_b8;
            uVar4 = FUN_00104889(local_b8,sVar6);
            local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
            if (local_b0 == -1) {
              local_b0 = 1;
              local_a8 = 0;
            }
            else if (local_b0 == -2) {
              uVar8 = 0xffffffffffffffff;
              pbVar10 = local_b8;
              do {
                if (uVar8 == 0) break;
                uVar8 = uVar8 - 1;
                bVar12 = *pbVar10;
                pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
              } while (bVar12 != 0);
              local_b0 = ~uVar8 - 1;
              local_a8 = 0;
            }
            else {
              if (local_b0 == 0) {
                local_b0 = 1;
                if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
                }
                if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
                  __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
                }
              }
              local_a8 = 1;
              iVar3 = mbsinit(&local_c4);
              if (iVar3 != 0) {
                bVar1 = false;
              }
            }
          }
          else {
            if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1)
                == 0) {
              iVar3 = mbsinit(&local_c4);
              if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
                __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
              }
              bVar1 = true;
              goto LAB_00103db9;
            }
            local_b0 = 1;
            local_a4[0] = (wint_t)(char)*local_b8;
            local_a8 = 1;
          }
          local_bc = '\x01';
        }
        if ((local_a8 != 0) && (local_a4[0] == 0)) {
                    /* WARNING: Subroutine does not return */
          abort();
        }
        local_b8 = local_b8 + local_b0;
        local_78 = local_78 + local_70;
      } while( true );
    }
    if (param_1 < pbVar5) {
      ppuVar7 = __ctype_b_loc();
      bVar12 = ((byte)((*ppuVar7)[pbVar5[-1]] >> 3) ^ 1) & 1;
      uVar8 = 0xffffffffffffffff;
      pbVar10 = __ptr;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar11 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar11 != 0);
      bVar11 = pbVar5[~uVar8 - 1];
      bVar9 = 1;
      if (bVar11 != 0) goto LAB_001044ac;
    }
    else {
      uVar8 = 0xffffffffffffffff;
      pbVar10 = __ptr;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar12 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar12 != 0);
      bVar11 = pbVar5[~uVar8 - 1];
      if (bVar11 == 0) {
        bVar12 = 1;
        goto LAB_00104442;
      }
      bVar12 = 1;
LAB_001044ac:
      ppuVar7 = __ctype_b_loc();
      bVar9 = ((byte)((*ppuVar7)[bVar11] >> 3) ^ 1) & 1;
    }
    bVar12 = bVar12 & bVar9;
    if ((bVar12 != 0) || (*pbVar5 == 0)) goto LAB_00104442;
    param_1 = pbVar5 + 1;
  } while( true );
LAB_001040e2:
  if (local_bc != '\0') goto LAB_0010412c;
  if (bVar1) {
LAB_001041e7:
    sVar6 = __ctype_get_mb_cur_max();
    pbVar10 = local_b8;
    uVar4 = FUN_00104889(local_b8,sVar6);
    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
    if (local_b0 == -1) {
      local_b0 = 1;
      local_a8 = 0;
    }
    else if (local_b0 == -2) {
      uVar8 = 0xffffffffffffffff;
      pbVar10 = local_b8;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar12 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar12 != 0);
      local_b0 = ~uVar8 - 1;
      local_a8 = 0;
    }
    else {
      if (local_b0 == 0) {
        local_b0 = 1;
        if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      local_a8 = 1;
      mbsinit(&local_c4);
    }
  }
  else {
    if ((*(uint *)(&DAT_00109ea0 + (ulong)(*local_b8 >> 5) * 4) >> (*local_b8 & 0x1f) & 1) == 0) {
      iVar3 = mbsinit(&local_c4);
      if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
        __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
      }
      goto LAB_001041e7;
    }
    local_b0 = 1;
    local_a4[0] = (wint_t)(char)*local_b8;
    local_a8 = 1;
  }
  local_bc = '\x01';
LAB_0010412c:
  if (((local_a8 == 0) || (bVar12 = local_a8, local_a4[0] != 0)) && (bVar12 = bVar11, local_a8 != 0)
     ) {
    iVar3 = iswalnum(local_a4[0]);
    bVar12 = iVar3 == 0;
  }
  bVar12 = local_c9 & bVar12;
  if (bVar12 != 0) goto LAB_00104442;
  local_c4.__count = 0;
  local_c4.__value = (_union_27)0x0;
  local_bc = 0;
  if ((*(uint *)(&DAT_00109ea0 + (ulong)(*pbVar5 >> 5) * 4) >> (*pbVar5 & 0x1f) & 1) == 0) {
    local_b8 = pbVar5;
    iVar3 = mbsinit(&local_c4);
    if (iVar3 == 0) {
                    /* WARNING: Subroutine does not return */
      __assert_fail("mbsinit (&iter->state)","mbuiter.h",0x96,"mbuiter_multi_next");
    }
    sVar6 = __ctype_get_mb_cur_max();
    pbVar10 = local_b8;
    uVar4 = FUN_00104889(local_b8,sVar6);
    local_b0 = FUN_00105ccf(local_a4,pbVar10,uVar4,&local_c4);
    if (local_b0 == -1) {
      local_b0 = 1;
      local_a8 = 0;
    }
    else if (local_b0 == -2) {
      uVar8 = 0xffffffffffffffff;
      pbVar10 = local_b8;
      do {
        if (uVar8 == 0) break;
        uVar8 = uVar8 - 1;
        bVar11 = *pbVar10;
        pbVar10 = pbVar10 + (ulong)bVar13 * -2 + 1;
      } while (bVar11 != 0);
      local_b0 = ~uVar8 - 1;
      local_a8 = 0;
    }
    else {
      if (local_b0 == 0) {
        local_b0 = 1;
        if (*local_b8 != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("*iter->cur.ptr == \'\\0\'","mbuiter.h",0xb2,"mbuiter_multi_next");
        }
        if (local_a4[0] != 0) {
                    /* WARNING: Subroutine does not return */
          __assert_fail("iter->cur.wc == 0","mbuiter.h",0xb3,"mbuiter_multi_next");
        }
      }
      local_a8 = 1;
      mbsinit(&local_c4);
    }
  }
  else {
    local_b0 = 1;
    local_a4[0] = (wint_t)(char)*pbVar5;
    local_a8 = 1;
    local_b8 = pbVar5;
  }
  local_bc = '\x01';
  if ((local_a8 != 0) && (local_a4[0] == 0)) goto LAB_00104442;
  param_1 = pbVar5 + local_b0;
  goto LAB_001044df;
}

