
char * sh_modcase(char *string,char *pat,wchar_t flags)

{
  char cVar1;
  long lVar2;
  mbstate_t_conflict mVar3;
  byte bVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  size_t sVar8;
  char *pcVar9;
  ushort **ppuVar10;
  __int32_t **pp_Var11;
  ulong uVar12;
  long lVar13;
  int iVar14;
  int start;
  wchar_t wVar15;
  uint uVar16;
  int iVar17;
  uint uVar18;
  byte *__s;
  int iVar19;
  long in_FS_OFFSET;
  byte bVar20;
  char *local_a0;
  wchar_t wc;
  wchar_t wc_1;
  mbstate_t_conflict state;
  mbstate_t_conflict mps;
  char mb [17];
  
  bVar20 = 0;
  lVar2 = *(long *)(in_FS_OFFSET + 0x28);
  if ((string == (char *)0x0) || (*string == '\0')) {
    local_a0 = (char *)xmalloc(1);
    *local_a0 = '\0';
  }
  else {
    state.__count = L'\0';
    state.__value = (anon_union_4_2_91654ee9_for___value)0x0;
    lVar13 = -1;
    pcVar9 = string;
    do {
      if (lVar13 == 0) break;
      lVar13 = lVar13 + -1;
      cVar1 = *pcVar9;
      pcVar9 = pcVar9 + 1;
    } while (cVar1 != '\0');
    iVar14 = ~(uint)lVar13 - 1;
    sVar8 = __ctype_get_mb_cur_max();
    iVar5 = (int)sVar8;
    local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));
    uVar6 = flags & 0x1000;
    uVar16 = flags & 0xffffefff;
    if (iVar14 < 1) {
      iVar17 = 0;
    }
    else {
      iVar19 = 0;
      iVar17 = 0;
      start = 0;
      do {
        sVar8 = __ctype_get_mb_cur_max();
        if (sVar8 == 1) {
LAB_001ad1c0:
          wVar15 = (wchar_t)string[start];
        }
        else {
          __s = (byte *)(string + start);
          bVar4 = *__s;
          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)
          goto LAB_001ad1c0;
          lVar13 = -1;
          pcVar9 = string;
          do {
            if (lVar13 == 0) break;
            lVar13 = lVar13 + -1;
            cVar1 = *pcVar9;
            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;
          } while (cVar1 != '\0');
          wVar15 = (int)(char)bVar4;
          if (start < (int)(~(uint)lVar13 - 2)) {
            mps.__count = L'\0';
            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;
            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),
                            (mbstate_t *)&mps);
            wVar15 = wc_1;
            if (0xfffffffffffffffc < sVar8 - 1) {
              wVar15 = (wchar_t)(char)*__s;
            }
          }
        }
        wc = wVar15;
        iVar7 = iswalnum(wVar15);
        mVar3 = state;
        if (iVar7 == 0) {
          iVar19 = 0;
        }
        if (pat == (char *)0x0) {
LAB_001ad298:
          if (uVar16 == 4) {
            if (uVar6 == 0) goto joined_r0x001ad3be;
joined_r0x001ad328:
            if (iVar19 == 0) goto LAB_001ad32e;
LAB_001ad3c4:
            iVar19 = iVar5;
            if (iVar5 == 1) {
LAB_001ad3d4:
              ppuVar10 = __ctype_b_loc();
              wVar15 = wc;
              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&
                 ((uint)(wc + L'\x80') < 0x180)) {
                pp_Var11 = __ctype_tolower_loc();
                wVar15 = (*pp_Var11)[wVar15];
              }
              goto LAB_001ad4ce;
            }
            uVar18 = 1;
            iVar19 = 1;
LAB_001ad345:
            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);
            if (0xfffffffffffffffd < sVar8) {
              wc = (wchar_t)(byte)string[start];
LAB_001ad5ac:
              if (uVar18 == 2) goto LAB_001ad542;
              wVar15 = wc;
              if ((int)uVar18 < 3) {
                if (uVar18 == 1) goto LAB_001ad3d4;
              }
              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;
              goto LAB_001ad4ce;
            }
            if (sVar8 == 0) {
              wc = L'\0';
            }
            wVar15 = wc;
            if (uVar18 == 2) {
              iVar7 = iswlower(wc);
              if (iVar7 != 0) {
                wVar15 = towupper(wVar15);
              }
            }
            else if ((int)uVar18 < 3) {
              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {
                wVar15 = towlower(wVar15);
              }
            }
            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {
              iVar7 = iswupper(wc);
              if (iVar7 == 0) {
                iVar7 = iswlower(wVar15);
                if (iVar7 != 0) {
                  wVar15 = towupper(wVar15);
                }
              }
              else {
                wVar15 = towlower(wVar15);
              }
            }
            if ((wVar15 < L'Ā') &&
               (bVar4 = (byte)wVar15,
               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {
              local_a0[iVar17] = bVar4;
              iVar17 = iVar17 + 1;
            }
            else {
              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);
              iVar7 = (int)sVar8;
              if (0 < iVar7) {
                mb[iVar7] = '\0';
              }
              strncpy(local_a0 + iVar17,mb,(long)iVar7);
              iVar17 = iVar17 + iVar7;
            }
          }
          else {
            if (uVar16 == 8) {
              if (uVar6 != 0) goto joined_r0x001ad328;
joined_r0x001ad3be:
              if (start < 1) goto LAB_001ad32e;
              goto LAB_001ad3c4;
            }
            if (uVar16 != 0x40) {
              if (uVar16 == 0x80) {
                if (uVar6 == 0) {
                  uVar18 = (uint)(start < 1);
                  iVar19 = 1;
                }
                else {
                  uVar18 = (uint)(iVar19 == 0);
                  iVar19 = 1;
                }
LAB_001ad2d3:
                if (iVar5 != 1) goto LAB_001ad345;
                goto LAB_001ad5ac;
              }
              uVar18 = uVar16;
              if (uVar16 != 0x10) goto LAB_001ad2d3;
              if (iVar19 != 0) goto LAB_001ad44b;
              iVar19 = iVar5;
              if (iVar5 != 1) {
                iVar19 = 1;
                goto LAB_001ad345;
              }
LAB_001ad5c8:
              wVar15 = wc;
              iVar7 = iswupper(wc);
              if (iVar7 == 0) {
                iVar7 = iswlower(wVar15);
                if (iVar7 != 0) {
                  wVar15 = towupper(wVar15);
                }
              }
              else {
                wVar15 = towlower(wVar15);
              }
              goto LAB_001ad4ce;
            }
            if (uVar6 == 0) {
              if (start < 1) goto LAB_001ad32e;
LAB_001ad44b:
              iVar19 = iVar5;
              wVar15 = wc;
              if (iVar5 != 1) {
                uVar18 = 0;
                iVar19 = 1;
                goto LAB_001ad345;
              }
              goto LAB_001ad4ce;
            }
            if (iVar19 != 0) goto LAB_001ad44b;
LAB_001ad32e:
            iVar19 = iVar5;
            if (iVar5 != 1) {
              uVar18 = 2;
              iVar19 = 1;
              goto LAB_001ad345;
            }
LAB_001ad542:
            ppuVar10 = __ctype_b_loc();
            wVar15 = wc;
            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&
               ((uint)(wc + L'\x80') < 0x180)) {
              pp_Var11 = __ctype_toupper_loc();
              wVar15 = (*pp_Var11)[wVar15];
            }
LAB_001ad4ce:
            local_a0[iVar17] = (char)wVar15;
            iVar17 = iVar17 + 1;
          }
          mVar3 = state;
          if (locale_mb_cur_max < 2) {
            start = start + 1;
            state = mVar3;
          }
          else {
            bVar4 = string[start];
            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {
              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {
                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),
                                 (mbstate_t *)&state);
                if (0xfffffffffffffffd < uVar12) {
                  start = start + 1;
                  state = mVar3;
                  goto LAB_001ad70f;
                }
              }
              else {
                uVar12 = (ulong)(bVar4 != 0);
              }
              if (uVar12 == 0) {
                start = start + 1;
                goto LAB_001ad70f;
              }
            }
            else {
              uVar12 = 1;
            }
            start = start + (int)uVar12;
          }
        }
        else {
          iVar7 = start + 1;
          state = mVar3;
          if (1 < locale_mb_cur_max) {
            bVar4 = string[start];
            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {
              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {
                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),
                                 (mbstate_t *)&state);
                if (0xfffffffffffffffd < uVar12) {
                  iVar7 = start + 1;
                  state = mVar3;
                  goto LAB_001ad263;
                }
              }
              else {
                uVar12 = (ulong)(bVar4 != 0);
              }
              if (uVar12 == 0) {
                iVar7 = start + 1;
                goto LAB_001ad263;
              }
            }
            else {
              uVar12 = 1;
            }
            iVar7 = start + (int)uVar12;
          }
LAB_001ad263:
          pcVar9 = substring(string,start,iVar7);
          wVar15 = strmatch(pat,pcVar9,L' ');
          free(pcVar9);
          if (wVar15 != L'\x01') goto LAB_001ad298;
          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));
          iVar17 = iVar17 + (iVar7 - start);
          iVar19 = 1;
          start = iVar7;
        }
LAB_001ad70f:
      } while (start < iVar14);
    }
    local_a0[iVar17] = '\0';
  }
  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {
    return local_a0;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



undefined1 * sh_modcase(char *param_1,long param_2,uint param_3)

{
  char cVar1;
  mbstate_t mVar2;
  byte bVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  size_t sVar8;
  void *__ptr;
  ushort **ppuVar9;
  __int32_t **pp_Var10;
  ulong uVar11;
  long lVar12;
  int iVar13;
  int iVar14;
  wchar_t wVar15;
  char *pcVar16;
  int iVar17;
  uint uVar18;
  byte *__s;
  int iVar19;
  long in_FS_OFFSET;
  byte bVar20;
  undefined1 *local_a0;
  wchar_t local_70;
  wchar_t local_6c;
  mbstate_t local_68;
  mbstate_t local_60;
  char local_58 [24];
  long local_40;
  
  bVar20 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {
    local_a0 = (undefined1 *)xmalloc(1);
    *local_a0 = 0;
  }
  else {
    local_68.__count = 0;
    local_68.__value = (_union_27)0x0;
    lVar12 = -1;
    pcVar16 = param_1;
    do {
      if (lVar12 == 0) break;
      lVar12 = lVar12 + -1;
      cVar1 = *pcVar16;
      pcVar16 = pcVar16 + 1;
    } while (cVar1 != '\0');
    iVar13 = ~(uint)lVar12 - 1;
    sVar8 = __ctype_get_mb_cur_max();
    iVar4 = (int)sVar8;
    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));
    uVar5 = param_3 & 0x1000;
    param_3 = param_3 & 0xffffefff;
    if (iVar13 < 1) {
      iVar17 = 0;
    }
    else {
      iVar19 = 0;
      iVar17 = 0;
      iVar14 = 0;
      do {
        sVar8 = __ctype_get_mb_cur_max();
        if (sVar8 == 1) {
LAB_001ad1c0:
          wVar15 = (wchar_t)param_1[iVar14];
        }
        else {
          __s = (byte *)(param_1 + iVar14);
          bVar3 = *__s;
          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)
          goto LAB_001ad1c0;
          lVar12 = -1;
          pcVar16 = param_1;
          do {
            if (lVar12 == 0) break;
            lVar12 = lVar12 + -1;
            cVar1 = *pcVar16;
            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;
          } while (cVar1 != '\0');
          wVar15 = (int)(char)bVar3;
          if (iVar14 < (int)(~(uint)lVar12 - 2)) {
            local_60.__count = 0;
            local_60.__value = (_union_27)0x0;
            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),
                            &local_60);
            wVar15 = local_6c;
            if (0xfffffffffffffffc < sVar8 - 1) {
              wVar15 = (wchar_t)(char)*__s;
            }
          }
        }
        local_70 = wVar15;
        iVar6 = iswalnum(wVar15);
        mVar2 = local_68;
        if (iVar6 == 0) {
          iVar19 = 0;
        }
        if (param_2 == 0) {
LAB_001ad298:
          if (param_3 == 4) {
            if (uVar5 == 0) goto joined_r0x001ad3be;
joined_r0x001ad328:
            if (iVar19 == 0) goto LAB_001ad32e;
LAB_001ad3c4:
            iVar19 = iVar4;
            if (iVar4 == 1) {
LAB_001ad3d4:
              ppuVar9 = __ctype_b_loc();
              wVar15 = local_70;
              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&
                 ((uint)(local_70 + L'\x80') < 0x180)) {
                pp_Var10 = __ctype_tolower_loc();
                wVar15 = (*pp_Var10)[wVar15];
              }
              goto LAB_001ad4ce;
            }
            uVar18 = 1;
            iVar19 = 1;
LAB_001ad345:
            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);
            if (0xfffffffffffffffd < sVar8) {
              local_70 = (wchar_t)(byte)param_1[iVar14];
LAB_001ad5ac:
              if (uVar18 == 2) goto LAB_001ad542;
              wVar15 = local_70;
              if ((int)uVar18 < 3) {
                if (uVar18 == 1) goto LAB_001ad3d4;
              }
              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;
              goto LAB_001ad4ce;
            }
            if (sVar8 == 0) {
              local_70 = L'\0';
            }
            wVar15 = local_70;
            if (uVar18 == 2) {
              iVar6 = iswlower(local_70);
              if (iVar6 != 0) {
                wVar15 = towupper(wVar15);
              }
            }
            else if ((int)uVar18 < 3) {
              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {
                wVar15 = towlower(wVar15);
              }
            }
            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {
              iVar6 = iswupper(local_70);
              if (iVar6 == 0) {
                iVar6 = iswlower(wVar15);
                if (iVar6 != 0) {
                  wVar15 = towupper(wVar15);
                }
              }
              else {
                wVar15 = towlower(wVar15);
              }
            }
            if ((wVar15 < L'Ā') &&
               (bVar3 = (byte)wVar15,
               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {
              local_a0[iVar17] = bVar3;
              iVar17 = iVar17 + 1;
            }
            else {
              sVar8 = wcrtomb(local_58,wVar15,&local_68);
              iVar6 = (int)sVar8;
              if (0 < iVar6) {
                local_58[iVar6] = '\0';
              }
              strncpy(local_a0 + iVar17,local_58,(long)iVar6);
              iVar17 = iVar17 + iVar6;
            }
          }
          else {
            if (param_3 == 8) {
              if (uVar5 != 0) goto joined_r0x001ad328;
joined_r0x001ad3be:
              if (iVar14 < 1) goto LAB_001ad32e;
              goto LAB_001ad3c4;
            }
            if (param_3 != 0x40) {
              if (param_3 == 0x80) {
                if (uVar5 == 0) {
                  uVar18 = (uint)(iVar14 < 1);
                  iVar19 = 1;
                }
                else {
                  uVar18 = (uint)(iVar19 == 0);
                  iVar19 = 1;
                }
LAB_001ad2d3:
                if (iVar4 != 1) goto LAB_001ad345;
                goto LAB_001ad5ac;
              }
              uVar18 = param_3;
              if (param_3 != 0x10) goto LAB_001ad2d3;
              if (iVar19 != 0) goto LAB_001ad44b;
              iVar19 = iVar4;
              if (iVar4 != 1) {
                iVar19 = 1;
                goto LAB_001ad345;
              }
LAB_001ad5c8:
              wVar15 = local_70;
              iVar6 = iswupper(local_70);
              if (iVar6 == 0) {
                iVar6 = iswlower(wVar15);
                if (iVar6 != 0) {
                  wVar15 = towupper(wVar15);
                }
              }
              else {
                wVar15 = towlower(wVar15);
              }
              goto LAB_001ad4ce;
            }
            if (uVar5 == 0) {
              if (iVar14 < 1) goto LAB_001ad32e;
LAB_001ad44b:
              iVar19 = iVar4;
              wVar15 = local_70;
              if (iVar4 != 1) {
                uVar18 = 0;
                iVar19 = 1;
                goto LAB_001ad345;
              }
              goto LAB_001ad4ce;
            }
            if (iVar19 != 0) goto LAB_001ad44b;
LAB_001ad32e:
            iVar19 = iVar4;
            if (iVar4 != 1) {
              uVar18 = 2;
              iVar19 = 1;
              goto LAB_001ad345;
            }
LAB_001ad542:
            ppuVar9 = __ctype_b_loc();
            wVar15 = local_70;
            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&
               ((uint)(local_70 + L'\x80') < 0x180)) {
              pp_Var10 = __ctype_toupper_loc();
              wVar15 = (*pp_Var10)[wVar15];
            }
LAB_001ad4ce:
            local_a0[iVar17] = (char)wVar15;
            iVar17 = iVar17 + 1;
          }
          mVar2 = local_68;
          if (locale_mb_cur_max < 2) {
            local_68 = mVar2;
            iVar14 = iVar14 + 1;
          }
          else {
            bVar3 = param_1[iVar14];
            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {
              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {
                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);
                if (0xfffffffffffffffd < uVar11) {
                  local_68 = mVar2;
                  iVar14 = iVar14 + 1;
                  goto LAB_001ad70f;
                }
              }
              else {
                uVar11 = (ulong)(bVar3 != 0);
              }
              if (uVar11 == 0) {
                iVar14 = iVar14 + 1;
                goto LAB_001ad70f;
              }
            }
            else {
              uVar11 = 1;
            }
            iVar14 = iVar14 + (int)uVar11;
          }
        }
        else {
          iVar6 = iVar14 + 1;
          local_68 = mVar2;
          if (1 < locale_mb_cur_max) {
            bVar3 = param_1[iVar14];
            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {
              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {
                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);
                if (0xfffffffffffffffd < uVar11) {
                  iVar6 = iVar14 + 1;
                  local_68 = mVar2;
                  goto LAB_001ad263;
                }
              }
              else {
                uVar11 = (ulong)(bVar3 != 0);
              }
              if (uVar11 == 0) {
                iVar6 = iVar14 + 1;
                goto LAB_001ad263;
              }
            }
            else {
              uVar11 = 1;
            }
            iVar6 = iVar14 + (int)uVar11;
          }
LAB_001ad263:
          __ptr = (void *)substring(param_1,iVar14,iVar6);
          iVar7 = strmatch(param_2,__ptr,0x20);
          free(__ptr);
          if (iVar7 != 1) goto LAB_001ad298;
          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));
          iVar17 = iVar17 + (iVar6 - iVar14);
          iVar19 = 1;
          iVar14 = iVar6;
        }
LAB_001ad70f:
      } while (iVar14 < iVar13);
    }
    local_a0[iVar17] = 0;
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return local_a0;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x88
MOV qword ptr [RSP + 0x10],RSI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x78],RAX
XOR EAX,EAX
TEST RDI,RDI
JZ 0x001ad0fa
MOV RBP,RDI
MOV R12D,EDX
CMP byte ptr [RDI],0x0
JNZ 0x001ad137
MOV EDI,0x1
CALL 0x00188151
MOV qword ptr [RSP + 0x18],RAX
MOV byte ptr [RAX],0x0
MOV RAX,qword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x78]
XOR RBX,qword ptr FS:[0x28]
JNZ 0x001ad7de
ADD RSP,0x88
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV qword ptr [RSP + 0x50],0x0
MOV RCX,-0x1
MOV EAX,0x0
SCASB.REPNE RDI
MOV RBX,RCX
NOT RBX
LEA RBX,[RBX + -0x1]
MOV dword ptr [RSP + 0x20],EBX
CALL 0x0012d370
MOV dword ptr [RSP + 0x28],EAX
LEA EDI,[RBX + RBX*0x1 + 0x1]
MOVSXD RDI,EDI
CALL 0x00188151
MOV qword ptr [RSP + 0x18],RAX
MOV EAX,R12D
AND EAX,0x1000
MOV dword ptr [RSP + 0x2c],EAX
AND R12D,0xffffefff
MOV dword ptr [RSP + 0xc],R12D
TEST EBX,EBX
JLE 0x001ad7b5
MOV R15D,0x0
MOV R12D,0x0
MOV EBX,0x0
LEA RAX,[RSP + 0x58]
MOV qword ptr [RSP + 0x30],RAX
LEA RAX,[RSP + 0x4c]
MOV qword ptr [RSP + 0x38],RAX
JMP 0x001ad719
MOVSXD RAX,EBX
MOVSX EDI,byte ptr [RBP + RAX*0x1]
MOV dword ptr [RSP + 0x48],EDI
CALL 0x0012d790
TEST EAX,EAX
CMOVZ R15D,EAX
CMP qword ptr [RSP + 0x10],0x0
JZ 0x001ad298
LEA R13D,[RBX + 0x1]
CMP dword ptr [0x0021c460],0x1
JLE 0x001ad263
MOVSXD RSI,EBX
ADD RSI,RBP
MOVZX ECX,byte ptr [RSI]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x7
LEA RDI,[0x1e9880]
MOV EAX,dword ptr [RDI + RAX*0x4]
SHR EAX,CL
TEST AL,0x1
JNZ 0x001ad2e0
CMP dword ptr [0x0021c468],0x0
JZ 0x001ad237
TEST CL,CL
JS 0x001ad237
SETNZ AL
MOVZX EAX,AL
TEST RAX,RAX
JNZ 0x001ad2e5
LEA R13D,[RBX + 0x1]
JMP 0x001ad263
MOV R14,qword ptr [RSP + 0x50]
LEA RCX,[RSP + 0x50]
MOV EDX,dword ptr [RSP + 0x20]
SUB EDX,EBX
MOVSXD RDX,EDX
MOV EDI,0x0
CALL 0x0012d3d0
CMP RAX,-0x2
JC 0x001ad228
MOV qword ptr [RSP + 0x50],R14
LEA R13D,[RBX + 0x1]
MOV EDX,R13D
MOV ESI,EBX
MOV RDI,RBP
CALL 0x00181757
MOV R14,RAX
MOV EDX,0x20
MOV RSI,RAX
MOV RDI,qword ptr [RSP + 0x10]
CALL 0x001a35e0
MOV dword ptr [RSP + 0x24],EAX
MOV RDI,R14
CALL 0x0012d080
CMP dword ptr [RSP + 0x24],0x1
JZ 0x001ad2ee
CMP dword ptr [RSP + 0xc],0x4
JZ 0x001ad31a
CMP dword ptr [RSP + 0xc],0x8
JZ 0x001ad416
CMP dword ptr [RSP + 0xc],0x40
JZ 0x001ad432
CMP dword ptr [RSP + 0xc],0x80
JZ 0x001ad468
MOV EAX,dword ptr [RSP + 0xc]
MOV R13D,EAX
CMP EAX,0x10
JZ 0x001ad49a
CMP dword ptr [RSP + 0x28],0x1
JZ 0x001ad5ac
JMP 0x001ad345
MOV EAX,0x1
LEA R13D,[RBX + RAX*0x1]
JMP 0x001ad263
MOV R14D,R13D
SUB R14D,EBX
MOVSXD RDI,R12D
ADD RDI,qword ptr [RSP + 0x18]
MOVSXD RDX,R14D
MOVSXD RSI,EBX
ADD RSI,RBP
CALL 0x0012d6a0
ADD R12D,R14D
MOV R15D,dword ptr [RSP + 0x24]
MOV EBX,R13D
JMP 0x001ad70f
CMP dword ptr [RSP + 0x2c],0x0
JZ 0x001ad3bc
TEST R15D,R15D
JNZ 0x001ad3c4
CMP dword ptr [RSP + 0x28],0x1
JZ 0x001ad53d
MOV R13D,0x2
MOV R15D,0x1
MOVSXD R14,EBX
ADD R14,RBP
LEA RCX,[RSP + 0x50]
MOV EDX,dword ptr [RSP + 0x20]
SUB EDX,EBX
MOVSXD RDX,EDX
LEA RDI,[RSP + 0x48]
MOV RSI,R14
CALL 0x0012d3d0
CMP RAX,-0x2
JNC 0x001ad5a4
TEST RAX,RAX
JNZ 0x001ad37d
MOV dword ptr [RSP + 0x48],0x0
CMP R13D,0x2
JZ 0x001ad639
JG 0x001ad5e9
CMP R13D,0x1
JNZ 0x001ad5f5
MOV R13D,dword ptr [RSP + 0x48]
MOV EDI,R13D
CALL 0x0012d710
TEST EAX,EAX
JZ 0x001ad5fa
MOV EDI,R13D
CALL 0x0012db20
MOV R13D,EAX
JMP 0x001ad5fa
TEST EBX,EBX
JLE 0x001ad32e
MOV EAX,dword ptr [RSP + 0x28]
MOV R15D,EAX
CMP EAX,0x1
JNZ 0x001ad7cd
CALL 0x0012dd50
MOV R13D,dword ptr [RSP + 0x48]
MOVZX EDX,R13B
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x1
JZ 0x001ad4ce
LEA EAX,[R13 + 0x80]
CMP EAX,0x17f
JA 0x001ad4ce
CALL 0x0012dd40
MOVSXD R13,R13D
MOV RAX,qword ptr [RAX]
MOV R13D,dword ptr [RAX + R13*0x4]
JMP 0x001ad4ce
CMP dword ptr [RSP + 0x2c],0x0
JZ 0x001ad428
TEST R15D,R15D
JNZ 0x001ad32e
JMP 0x001ad3c4
TEST EBX,EBX
JG 0x001ad32e
JMP 0x001ad3c4
CMP dword ptr [RSP + 0x2c],0x0
JZ 0x001ad443
TEST R15D,R15D
JNZ 0x001ad44b
JMP 0x001ad32e
TEST EBX,EBX
JLE 0x001ad32e
MOV EAX,dword ptr [RSP + 0x28]
MOV R15D,EAX
CMP EAX,0x1
JZ 0x001ad4c9
MOV R13D,0x0
MOV R15D,0x1
JMP 0x001ad345
CMP dword ptr [RSP + 0x2c],0x0
JZ 0x001ad485
TEST R15D,R15D
SETZ R13B
MOVZX R13D,R13B
MOV R15D,0x1
JMP 0x001ad2d3
TEST EBX,EBX
SETLE R13B
MOVZX R13D,R13B
MOV R15D,0x1
JMP 0x001ad2d3
TEST R15D,R15D
JNZ 0x001ad44b
MOV EAX,dword ptr [RSP + 0x28]
MOV R15D,EAX
CMP EAX,0x1
JZ 0x001ad5c8
MOV R13D,dword ptr [RSP + 0xc]
MOV R15D,0x1
JMP 0x001ad345
CMP R13D,0x1
JZ 0x001ad3d4
MOV R13D,dword ptr [RSP + 0x48]
MOVSXD RAX,R12D
MOV RSI,qword ptr [RSP + 0x18]
MOV byte ptr [RSI + RAX*0x1],R13B
LEA R12D,[R12 + 0x1]
CMP dword ptr [0x0021c460],0x1
JLE 0x001ad70c
MOVSXD RSI,EBX
ADD RSI,RBP
MOVZX ECX,byte ptr [RSI]
MOV EAX,ECX
SHR AL,0x5
AND EAX,0x7
LEA RDX,[0x1e9880]
MOV EAX,dword ptr [RDX + RAX*0x4]
SHR EAX,CL
TEST AL,0x1
JNZ 0x001ad703
CMP dword ptr [0x0021c468],0x0
JZ 0x001ad6d2
TEST CL,CL
JS 0x001ad6d2
SETNZ AL
MOVZX EAX,AL
TEST RAX,RAX
JNZ 0x001ad708
ADD EBX,0x1
JMP 0x001ad70f
MOV R15D,dword ptr [RSP + 0x28]
CALL 0x0012dd50
MOV R13D,dword ptr [RSP + 0x48]
MOVZX EDX,R13B
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x2
JZ 0x001ad4ce
LEA EAX,[R13 + 0x80]
CMP EAX,0x17f
JA 0x001ad4ce
CALL 0x0012d040
MOVSXD R13,R13D
MOV RAX,qword ptr [RAX]
MOV R13D,dword ptr [RAX + R13*0x4]
JMP 0x001ad4ce
MOV EDI,R13D
CALL 0x0012d050
TEST EAX,EAX
JZ 0x001ad4ce
MOV EDI,R13D
CALL 0x0012db50
MOV R13D,EAX
JMP 0x001ad4ce
MOVZX EAX,byte ptr [R14]
MOV dword ptr [RSP + 0x48],EAX
CMP R13D,0x2
JZ 0x001ad542
JLE 0x001ad4bf
CMP R13D,0x10
JZ 0x001ad5c8
CMP R13D,0x20
JNZ 0x001ad4c9
MOV R13D,dword ptr [RSP + 0x48]
MOV EDI,R13D
CALL 0x0012d710
TEST EAX,EAX
JZ 0x001ad584
MOV EDI,R13D
CALL 0x0012db20
MOV R13D,EAX
JMP 0x001ad4ce
CMP R13D,0x10
JZ 0x001ad657
CMP R13D,0x20
JZ 0x001ad657
MOV R13D,dword ptr [RSP + 0x48]
CMP R13D,0xff
JG 0x001ad695
MOV EAX,R13D
SHR AL,0x5
AND EAX,0x7
LEA RSI,[0x1e9880]
MOV EAX,dword ptr [RSI + RAX*0x4]
MOV ECX,R13D
SHR EAX,CL
TEST AL,0x1
JZ 0x001ad695
MOVSXD RAX,R12D
MOV RSI,qword ptr [RSP + 0x18]
MOV byte ptr [RSI + RAX*0x1],R13B
LEA R12D,[R12 + 0x1]
JMP 0x001ad4df
MOV R13D,dword ptr [RSP + 0x48]
MOV EDI,R13D
CALL 0x0012d050
TEST EAX,EAX
JZ 0x001ad5fa
MOV EDI,R13D
CALL 0x0012db50
MOV R13D,EAX
JMP 0x001ad5fa
MOV R13D,dword ptr [RSP + 0x48]
MOV EDI,R13D
CALL 0x0012d710
TEST EAX,EAX
JZ 0x001ad675
MOV EDI,R13D
CALL 0x0012db20
MOV R13D,EAX
JMP 0x001ad5fa
MOV EDI,R13D
CALL 0x0012d050
TEST EAX,EAX
JZ 0x001ad5fa
MOV EDI,R13D
CALL 0x0012db50
MOV R13D,EAX
JMP 0x001ad5fa
LEA RDX,[RSP + 0x50]
LEA RDI,[RSP + 0x60]
MOV ESI,R13D
CALL 0x0012d7c0
MOV R13,RAX
TEST EAX,EAX
JLE 0x001ad6b5
CDQE
MOV byte ptr [RSP + RAX*0x1 + 0x60],0x0
MOVSXD RDX,R13D
LEA RSI,[RSP + 0x60]
MOVSXD RDI,R12D
ADD RDI,qword ptr [RSP + 0x18]
CALL 0x0012d130
ADD R12D,R13D
JMP 0x001ad4df
MOV R13,qword ptr [RSP + 0x50]
LEA RCX,[RSP + 0x50]
MOV EDX,dword ptr [RSP + 0x20]
SUB EDX,EBX
MOVSXD RDX,EDX
MOV EDI,0x0
CALL 0x0012d3d0
CMP RAX,-0x2
JC 0x001ad52c
MOV qword ptr [RSP + 0x50],R13
ADD EBX,0x1
JMP 0x001ad70f
MOV EAX,0x1
ADD EBX,EAX
JMP 0x001ad70f
ADD EBX,0x1
CMP EBX,dword ptr [RSP + 0x20]
JGE 0x001ad7bb
CALL 0x0012d370
CMP RAX,0x1
JZ 0x001ad1c0
MOVSXD R13,EBX
ADD R13,RBP
MOVZX ESI,byte ptr [R13]
MOV EAX,ESI
SHR AL,0x5
AND EAX,0x7
LEA RCX,[0x1e9880]
MOV EAX,dword ptr [RCX + RAX*0x4]
MOV ECX,ESI
SHR EAX,CL
TEST AL,0x1
JNZ 0x001ad1c0
MOV EAX,0x0
MOV RCX,-0x1
MOV RDI,RBP
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
LEA RDX,[RAX + -0x1]
LEA EAX,[RDX + -0x1]
MOVSX EDI,SIL
CMP EAX,EBX
JLE 0x001ad1c8
MOV RCX,qword ptr [RSP + 0x30]
MOV qword ptr [RCX],0x0
SUB EDX,EBX
MOVSXD RDX,EDX
MOV RSI,R13
MOV RDI,qword ptr [RSP + 0x38]
CALL 0x0012d3d0
SUB RAX,0x1
MOV EDI,dword ptr [RSP + 0x4c]
CMP RAX,-0x4
JBE 0x001ad1c8
MOVSX EDI,byte ptr [R13]
JMP 0x001ad1c8
MOV R12D,0x0
MOVSXD R12,R12D
MOV RAX,qword ptr [RSP + 0x18]
MOV byte ptr [RAX + R12*0x1],0x0
JMP 0x001ad10c
MOV R13D,0x1
MOV R15D,0x1
JMP 0x001ad345
CALL 0x0012d3b0
(translation_unit "undefined1 * sh_modcase(char *param_1,long param_2,uint param_3)\n\n{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "undefined1 * sh_modcase(char *param_1,long param_2,uint param_3)\n\n{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" type_identifier (pointer_declarator "* sh_modcase(char *param_1,long param_2,uint param_3)" * (function_declarator "sh_modcase(char *param_1,long param_2,uint param_3)" identifier (parameter_list "(char *param_1,long param_2,uint param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "mbstate_t mVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "ushort **ppuVar9;" type_identifier (pointer_declarator "**ppuVar9" * (pointer_declarator "*ppuVar9" * identifier)) ;) (declaration "__int32_t **pp_Var10;" type_identifier (pointer_declarator "**pp_Var10" * (pointer_declarator "*pp_Var10" * identifier)) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "wchar_t wVar15;" type_identifier identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "undefined1 *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "wchar_t local_70;" type_identifier identifier ;) (declaration "wchar_t local_6c;" type_identifier identifier ;) (declaration "mbstate_t local_68;" type_identifier identifier ;) (declaration "mbstate_t local_60;" type_identifier identifier ;) (declaration "char local_58 [24];" primitive_type (array_declarator "local_58 [24]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 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) ))))) ;) (if_statement "if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" if (parenthesized_expression "((param_1 == (char *)0x0) || (*param_1 == '\0'))" ( (binary_expression "(param_1 == (char *)0x0) || (*param_1 == '\0')" (parenthesized_expression "(param_1 == (char *)0x0)" ( (binary_expression "param_1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*param_1 == '\0')" ( (binary_expression "*param_1 == '\0'" (pointer_expression "*param_1" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }" { (expression_statement "local_a0 = (undefined1 *)xmalloc(1);" (assignment_expression "local_a0 = (undefined1 *)xmalloc(1)" identifier = (cast_expression "(undefined1 *)xmalloc(1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*local_a0 = 0;" (assignment_expression "*local_a0 = 0" (pointer_expression "*local_a0" * identifier) = number_literal) ;) }) (else_clause "else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" else (compound_statement "{\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" { (expression_statement "local_68.__count = 0;" (assignment_expression "local_68.__count = 0" (field_expression "local_68.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_68.__value = (_union_27)0x0;" (assignment_expression "local_68.__value = (_union_27)0x0" (field_expression "local_68.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar16 = param_1;" (assignment_expression "pcVar16 = param_1" identifier = identifier) ;) (do_statement "do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar16;" (assignment_expression "cVar1 = *pcVar16" identifier = (pointer_expression "*pcVar16" * identifier)) ;) (expression_statement "pcVar16 = pcVar16 + 1;" (assignment_expression "pcVar16 = pcVar16 + 1" identifier = (binary_expression "pcVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar13 = ~(uint)lVar12 - 1;" (assignment_expression "iVar13 = ~(uint)lVar12 - 1" identifier = (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (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 "iVar4 = (int)sVar8;" (assignment_expression "iVar4 = (int)sVar8" identifier = (cast_expression "(int)sVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));" (assignment_expression "local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1))" identifier = (cast_expression "(undefined1 *)xmalloc((long)(iVar13 * 2 + 1))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)(iVar13 * 2 + 1))" identifier (argument_list "((long)(iVar13 * 2 + 1))" ( (cast_expression "(long)(iVar13 * 2 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 * 2 + 1)" ( (binary_expression "iVar13 * 2 + 1" (binary_expression "iVar13 * 2" identifier * number_literal) + number_literal) ))) ))))) ;) (expression_statement "uVar5 = param_3 & 0x1000;" (assignment_expression "uVar5 = param_3 & 0x1000" identifier = (binary_expression "param_3 & 0x1000" identifier & number_literal)) ;) (expression_statement "param_3 = param_3 & 0xffffefff;" (assignment_expression "param_3 = param_3 & 0xffffefff" identifier = (binary_expression "param_3 & 0xffffefff" identifier & number_literal)) ;) (if_statement "if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" if (parenthesized_expression "(iVar13 < 1)" ( (binary_expression "iVar13 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar17 = 0;\n    }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" else (compound_statement "{\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);" do (compound_statement "{\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      }" { (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 (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" if (parenthesized_expression "(sVar8 == 1)" ( (binary_expression "sVar8 == 1" identifier == number_literal) )) (compound_statement "{\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }" { (labeled_statement "LAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];" statement_identifier : (expression_statement "wVar15 = (wchar_t)param_1[iVar14];" (assignment_expression "wVar15 = (wchar_t)param_1[iVar14]" identifier = (cast_expression "(wchar_t)param_1[iVar14]" ( (type_descriptor "wchar_t" type_identifier) ) (subscript_expression "param_1[iVar14]" identifier [ identifier ]))) ;)) }) (else_clause "else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" else (compound_statement "{\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" { (expression_statement "__s = (byte *)(param_1 + iVar14);" (assignment_expression "__s = (byte *)(param_1 + iVar14)" identifier = (cast_expression "(byte *)(param_1 + iVar14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar14)" ( (binary_expression "param_1 + iVar14" identifier + identifier) )))) ;) (expression_statement "bVar3 = *__s;" (assignment_expression "bVar3 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001ad1c0;" goto statement_identifier ;)) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar16 = param_1;" (assignment_expression "pcVar16 = param_1" identifier = identifier) ;) (do_statement "do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar16;" (assignment_expression "cVar1 = *pcVar16" identifier = (pointer_expression "*pcVar16" * identifier)) ;) (expression_statement "pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pcVar16 + (ulong)bVar20 * -2 + 1" (binary_expression "pcVar16 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "wVar15 = (int)(char)bVar3;" (assignment_expression "wVar15 = (int)(char)bVar3" identifier = (cast_expression "(int)(char)bVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (if_statement "if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" if (parenthesized_expression "(iVar14 < (int)(~(uint)lVar12 - 2))" ( (binary_expression "iVar14 < (int)(~(uint)lVar12 - 2)" identifier < (cast_expression "(int)(~(uint)lVar12 - 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(~(uint)lVar12 - 2)" ( (binary_expression "~(uint)lVar12 - 2" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )))) )) (compound_statement "{\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" { (expression_statement "local_60.__count = 0;" (assignment_expression "local_60.__count = 0" (field_expression "local_60.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_60.__value = (_union_27)0x0;" (assignment_expression "local_60.__value = (_union_27)0x0" (field_expression "local_60.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);" (assignment_expression "sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" identifier = (call_expression "mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" identifier (argument_list "(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" ( (pointer_expression "&local_6c" & identifier) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(long)(int)((~(uint)lVar12 - 1) - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((~(uint)lVar12 - 1) - iVar14)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((~(uint)lVar12 - 1) - iVar14)" ( (binary_expression "(~(uint)lVar12 - 1) - iVar14" (parenthesized_expression "(~(uint)lVar12 - 1)" ( (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )) - identifier) )))) , (pointer_expression "&local_60" & identifier) )))) ;) (expression_statement "wVar15 = local_6c;" (assignment_expression "wVar15 = local_6c" identifier = identifier) ;) (if_statement "if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }" if (parenthesized_expression "(0xfffffffffffffffc < sVar8 - 1)" ( (binary_expression "0xfffffffffffffffc < sVar8 - 1" number_literal < (binary_expression "sVar8 - 1" identifier - number_literal)) )) (compound_statement "{\n              wVar15 = (wchar_t)(char)*__s;\n            }" { (expression_statement "wVar15 = (wchar_t)(char)*__s;" (assignment_expression "wVar15 = (wchar_t)(char)*__s" identifier = (binary_expression "(wchar_t)(char)*__s" (call_expression "(wchar_t)(char)" (parenthesized_expression "(wchar_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) })) })) }))) (expression_statement "local_70 = wVar15;" (assignment_expression "local_70 = wVar15" identifier = identifier) ;) (expression_statement "iVar6 = iswalnum(wVar15);" (assignment_expression "iVar6 = iswalnum(wVar15)" identifier = (call_expression "iswalnum(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (expression_statement "mVar2 = local_68;" (assignment_expression "mVar2 = local_68" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n          iVar19 = 0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar19 = 0;\n        }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) })) (if_statement "if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }" { (labeled_statement "LAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" statement_identifier : (if_statement "if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" if (parenthesized_expression "(param_3 == 4)" ( (binary_expression "param_3 == 4" identifier == number_literal) )) (compound_statement "{\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }" { (if_statement "if (uVar5 == 0) goto joined_r0x001ad3be;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x001ad3be;" goto statement_identifier ;)) (labeled_statement "joined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;" statement_identifier : (if_statement "if (iVar19 == 0) goto LAB_001ad32e;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;))) (labeled_statement "LAB_001ad3c4:\n            iVar19 = iVar4;" statement_identifier : (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;)) (if_statement "if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (compound_statement "{\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" { (labeled_statement "LAB_001ad3d4:\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 "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }" if (parenthesized_expression "(((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180))" ( (binary_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1)" ( (binary_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1" (pointer_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2" (cast_expression "(long)*ppuVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar9" * identifier)) + (binary_expression "(ulong)(uint)(local_70 & 0xff) * 2" (call_expression "(ulong)(uint)(local_70 & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(local_70 & 0xff)" ( (binary_expression "local_70 & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)(local_70 + L'\x80') < 0x180)" ( (binary_expression "(uint)(local_70 + L'\x80') < 0x180" (call_expression "(uint)(local_70 + L'\x80')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_70 + L'\x80')" ( (binary_expression "local_70 + L'\x80'" identifier + (char_literal "L'\x80'" L' escape_sequence ')) ))) < number_literal) ))) )) (compound_statement "{\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }" { (expression_statement "pp_Var10 = __ctype_tolower_loc();" (assignment_expression "pp_Var10 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "wVar15 = (*pp_Var10)[wVar15];" (assignment_expression "wVar15 = (*pp_Var10)[wVar15]" identifier = (subscript_expression "(*pp_Var10)[wVar15]" (parenthesized_expression "(*pp_Var10)" ( (pointer_expression "*pp_Var10" * identifier) )) [ identifier ])) ;) })) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" statement_identifier : (expression_statement "sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier = (call_expression "mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier (argument_list "(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" ( (pointer_expression "&local_70" & identifier) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar13 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 - iVar14)" ( (binary_expression "iVar13 - iVar14" identifier - identifier) ))) , (pointer_expression "&local_68" & identifier) )))) ;)) (if_statement "if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(0xfffffffffffffffd < sVar8)" ( (binary_expression "0xfffffffffffffffd < sVar8" number_literal < identifier) )) (compound_statement "{\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" { (expression_statement "local_70 = (wchar_t)(byte)param_1[iVar14];" (assignment_expression "local_70 = (wchar_t)(byte)param_1[iVar14]" identifier = (cast_expression "(wchar_t)(byte)param_1[iVar14]" ( (type_descriptor "wchar_t" type_identifier) ) (cast_expression "(byte)param_1[iVar14]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_1[iVar14]" identifier [ identifier ])))) ;) (labeled_statement "LAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;" statement_identifier : (if_statement "if (uVar18 == 2) goto LAB_001ad542;" if (parenthesized_expression "(uVar18 == 2)" ( (binary_expression "uVar18 == 2" identifier == number_literal) )) (goto_statement "goto LAB_001ad542;" goto statement_identifier ;))) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" if (parenthesized_expression "((int)uVar18 < 3)" ( (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }" { (if_statement "if (uVar18 == 1) goto LAB_001ad3d4;" if (parenthesized_expression "(uVar18 == 1)" ( (binary_expression "uVar18 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001ad3d4;" goto statement_identifier ;)) }) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" else (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" if (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" ( (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) || (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) ))) )) (goto_statement "goto LAB_001ad5c8;" goto statement_identifier ;)))) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (sVar8 == 0) {\n              local_70 = L'\0';\n            }" if (parenthesized_expression "(sVar8 == 0)" ( (binary_expression "sVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              local_70 = L'\0';\n            }" { (expression_statement "local_70 = L'\0';" (assignment_expression "local_70 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) })) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "(uVar18 == 2)" ( (binary_expression "uVar18 == 2" identifier == number_literal) )) (compound_statement "{\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }" { (expression_statement "iVar6 = iswlower(local_70);" (assignment_expression "iVar6 = iswlower(local_70)" identifier = (call_expression "iswlower(local_70)" identifier (argument_list "(local_70)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                wVar15 = towupper(wVar15);\n              }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" else (if_statement "if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "((int)uVar18 < 3)" ( (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }" { (if_statement "if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0))" ( (binary_expression "(uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)" (parenthesized_expression "(uVar18 == 1)" ( (binary_expression "uVar18 == 1" identifier == number_literal) )) && (parenthesized_expression "(iVar6 = iswupper(local_70), iVar6 != 0)" ( (comma_expression "iVar6 = iswupper(local_70), iVar6 != 0" (assignment_expression "iVar6 = iswupper(local_70)" identifier = (call_expression "iswupper(local_70)" identifier (argument_list "(local_70)" ( identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" else (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" ( (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) || (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) ))) )) (compound_statement "{\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" { (expression_statement "iVar6 = iswupper(local_70);" (assignment_expression "iVar6 = iswupper(local_70)" identifier = (call_expression "iswupper(local_70)" identifier (argument_list "(local_70)" ( identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" { (expression_statement "iVar6 = iswlower(wVar15);" (assignment_expression "iVar6 = iswlower(wVar15)" identifier = (call_expression "iswlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" else (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) }))) })))))) (if_statement "if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" if (parenthesized_expression "((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0))" ( (binary_expression "(wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" (parenthesized_expression "(wVar15 < L'Ā')" ( (binary_expression "wVar15 < L'Ā'" identifier < (char_literal "L'Ā'" L' character ')) )) && (parenthesized_expression "(bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" ( (comma_expression "bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (assignment_expression "bVar3 = (byte)wVar15" identifier = (cast_expression "(byte)wVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) , (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }" { (expression_statement "local_a0[iVar17] = bVar3;" (assignment_expression "local_a0[iVar17] = bVar3" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" else (compound_statement "{\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" { (expression_statement "sVar8 = wcrtomb(local_58,wVar15,&local_68);" (assignment_expression "sVar8 = wcrtomb(local_58,wVar15,&local_68)" identifier = (call_expression "wcrtomb(local_58,wVar15,&local_68)" identifier (argument_list "(local_58,wVar15,&local_68)" ( identifier , identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "iVar6 = (int)sVar8;" (assignment_expression "iVar6 = (int)sVar8" identifier = (cast_expression "(int)sVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n                local_58[iVar6] = '\0';\n              }" { (expression_statement "local_58[iVar6] = '\0';" (assignment_expression "local_58[iVar6] = '\0'" (subscript_expression "local_58[iVar6]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "strncpy(local_a0 + iVar17,local_58,(long)iVar6);" (call_expression "strncpy(local_a0 + iVar17,local_58,(long)iVar6)" identifier (argument_list "(local_a0 + iVar17,local_58,(long)iVar6)" ( (binary_expression "local_a0 + iVar17" identifier + identifier) , identifier , (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) ;) (expression_statement "iVar17 = iVar17 + iVar6;" (assignment_expression "iVar17 = iVar17 + iVar6" identifier = (binary_expression "iVar17 + iVar6" identifier + identifier)) ;) }))) }) (else_clause "else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" else (compound_statement "{\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" { (if_statement "if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" if (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) )) (compound_statement "{\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" { (if_statement "if (uVar5 != 0) goto joined_r0x001ad328;" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x001ad328;" goto statement_identifier ;)) (labeled_statement "joined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;" statement_identifier : (if_statement "if (iVar14 < 1) goto LAB_001ad32e;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;))) (goto_statement "goto LAB_001ad3c4;" goto statement_identifier ;) })) (if_statement "if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(param_3 != 0x40)" ( (binary_expression "param_3 != 0x40" identifier != number_literal) )) (compound_statement "{\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" { (if_statement "if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" if (parenthesized_expression "(param_3 == 0x80)" ( (binary_expression "param_3 == 0x80" identifier == number_literal) )) (compound_statement "{\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" { (if_statement "if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }" { (expression_statement "uVar18 = (uint)(iVar14 < 1);" (assignment_expression "uVar18 = (uint)(iVar14 < 1)" identifier = (call_expression "(uint)(iVar14 < 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" else (compound_statement "{\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" { (expression_statement "uVar18 = (uint)(iVar19 == 0);" (assignment_expression "uVar18 = (uint)(iVar19 == 0)" identifier = (call_expression "(uint)(iVar19 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }))) (labeled_statement "LAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;" statement_identifier : (if_statement "if (iVar4 != 1) goto LAB_001ad345;" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;))) (goto_statement "goto LAB_001ad5ac;" goto statement_identifier ;) })) (expression_statement "uVar18 = param_3;" (assignment_expression "uVar18 = param_3" identifier = identifier) ;) (if_statement "if (param_3 != 0x10) goto LAB_001ad2d3;" if (parenthesized_expression "(param_3 != 0x10)" ( (binary_expression "param_3 != 0x10" identifier != number_literal) )) (goto_statement "goto LAB_001ad2d3;" goto statement_identifier ;)) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001ad44b;" goto statement_identifier ;)) (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" { (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (labeled_statement "LAB_001ad5c8:\n              wVar15 = local_70;" statement_identifier : (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;)) (expression_statement "iVar6 = iswupper(local_70);" (assignment_expression "iVar6 = iswupper(local_70)" identifier = (call_expression "iswupper(local_70)" identifier (argument_list "(local_70)" ( identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" { (expression_statement "iVar6 = iswlower(wVar15);" (assignment_expression "iVar6 = iswlower(wVar15)" identifier = (call_expression "iswlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" else (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) }))) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" { (if_statement "if (iVar14 < 1) goto LAB_001ad32e;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;)) (labeled_statement "LAB_001ad44b:\n              iVar19 = iVar4;" statement_identifier : (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;)) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001ad44b;" goto statement_identifier ;)) (labeled_statement "LAB_001ad32e:\n            iVar19 = iVar4;" statement_identifier : (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;)) (if_statement "if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" { (expression_statement "uVar18 = 2;" (assignment_expression "uVar18 = 2" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (labeled_statement "LAB_001ad542:\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 "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }" if (parenthesized_expression "(((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180))" ( (binary_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2)" ( (binary_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2" (pointer_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2" (cast_expression "(long)*ppuVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar9" * identifier)) + (binary_expression "(ulong)(uint)(local_70 & 0xff) * 2" (call_expression "(ulong)(uint)(local_70 & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(local_70 & 0xff)" ( (binary_expression "local_70 & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)(local_70 + L'\x80') < 0x180)" ( (binary_expression "(uint)(local_70 + L'\x80') < 0x180" (call_expression "(uint)(local_70 + L'\x80')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_70 + L'\x80')" ( (binary_expression "local_70 + L'\x80'" identifier + (char_literal "L'\x80'" L' escape_sequence ')) ))) < number_literal) ))) )) (compound_statement "{\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }" { (expression_statement "pp_Var10 = __ctype_toupper_loc();" (assignment_expression "pp_Var10 = __ctype_toupper_loc()" identifier = (call_expression "__ctype_toupper_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "wVar15 = (*pp_Var10)[wVar15];" (assignment_expression "wVar15 = (*pp_Var10)[wVar15]" identifier = (subscript_expression "(*pp_Var10)[wVar15]" (parenthesized_expression "(*pp_Var10)" ( (pointer_expression "*pp_Var10" * identifier) )) [ identifier ])) ;) })) (labeled_statement "LAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;" statement_identifier : (expression_statement "local_a0[iVar17] = (char)wVar15;" (assignment_expression "local_a0[iVar17] = (char)wVar15" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = (cast_expression "(char)wVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;)) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) })))) (expression_statement "mVar2 = local_68;" (assignment_expression "mVar2 = local_68" identifier = identifier) ;) (if_statement "if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }" { (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" else (compound_statement "{\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" { (expression_statement "bVar3 = param_1[iVar14];" (assignment_expression "bVar3 = param_1[iVar14]" identifier = (subscript_expression "param_1[iVar14]" identifier [ identifier ])) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar3 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar3 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }" { (expression_statement "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier (argument_list "((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar13 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 - iVar14)" ( (binary_expression "iVar13 - iVar14" identifier - identifier) ))) , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }" if (parenthesized_expression "(0xfffffffffffffffd < uVar11)" ( (binary_expression "0xfffffffffffffffd < uVar11" number_literal < identifier) )) (compound_statement "{\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }" { (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad70f;" goto statement_identifier ;) })) }) (else_clause "else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" else (compound_statement "{\n                uVar11 = (ulong)(bVar3 != 0);\n              }" { (expression_statement "uVar11 = (ulong)(bVar3 != 0);" (assignment_expression "uVar11 = (ulong)(bVar3 != 0)" identifier = (call_expression "(ulong)(bVar3 != 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }" { (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad70f;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar11 = 1;\n            }" else (compound_statement "{\n              uVar11 = 1;\n            }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar14 = iVar14 + (int)uVar11;" (assignment_expression "iVar14 = iVar14 + (int)uVar11" identifier = (binary_expression "iVar14 + (int)uVar11" identifier + (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) }) (else_clause "else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" else (compound_statement "{\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" { (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (if_statement "if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }" if (parenthesized_expression "(1 < locale_mb_cur_max)" ( (binary_expression "1 < locale_mb_cur_max" number_literal < identifier) )) (compound_statement "{\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }" { (expression_statement "bVar3 = param_1[iVar14];" (assignment_expression "bVar3 = param_1[iVar14]" identifier = (subscript_expression "param_1[iVar14]" identifier [ identifier ])) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar3 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar3 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }" { (expression_statement "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier (argument_list "((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar13 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 - iVar14)" ( (binary_expression "iVar13 - iVar14" identifier - identifier) ))) , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }" if (parenthesized_expression "(0xfffffffffffffffd < uVar11)" ( (binary_expression "0xfffffffffffffffd < uVar11" number_literal < identifier) )) (compound_statement "{\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }" { (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (goto_statement "goto LAB_001ad263;" goto statement_identifier ;) })) }) (else_clause "else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" else (compound_statement "{\n                uVar11 = (ulong)(bVar3 != 0);\n              }" { (expression_statement "uVar11 = (ulong)(bVar3 != 0);" (assignment_expression "uVar11 = (ulong)(bVar3 != 0)" identifier = (call_expression "(ulong)(bVar3 != 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }" { (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad263;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar11 = 1;\n            }" else (compound_statement "{\n              uVar11 = 1;\n            }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar6 = iVar14 + (int)uVar11;" (assignment_expression "iVar6 = iVar14 + (int)uVar11" identifier = (binary_expression "iVar14 + (int)uVar11" identifier + (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "LAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);" statement_identifier : (expression_statement "__ptr = (void *)substring(param_1,iVar14,iVar6);" (assignment_expression "__ptr = (void *)substring(param_1,iVar14,iVar6)" identifier = (cast_expression "(void *)substring(param_1,iVar14,iVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "substring(param_1,iVar14,iVar6)" identifier (argument_list "(param_1,iVar14,iVar6)" ( identifier , identifier , identifier ))))) ;)) (expression_statement "iVar7 = strmatch(param_2,__ptr,0x20);" (assignment_expression "iVar7 = strmatch(param_2,__ptr,0x20)" identifier = (call_expression "strmatch(param_2,__ptr,0x20)" identifier (argument_list "(param_2,__ptr,0x20)" ( identifier , identifier , number_literal )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (iVar7 != 1) goto LAB_001ad298;" if (parenthesized_expression "(iVar7 != 1)" ( (binary_expression "iVar7 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001ad298;" goto statement_identifier ;)) (expression_statement "memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));" (call_expression "memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14))" identifier (argument_list "(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14))" ( (binary_expression "local_a0 + iVar17" identifier + identifier) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar6 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar6 - iVar14)" ( (binary_expression "iVar6 - iVar14" identifier - identifier) ))) ))) ;) (expression_statement "iVar17 = iVar17 + (iVar6 - iVar14);" (assignment_expression "iVar17 = iVar17 + (iVar6 - iVar14)" identifier = (binary_expression "iVar17 + (iVar6 - iVar14)" identifier + (parenthesized_expression "(iVar6 - iVar14)" ( (binary_expression "iVar6 - iVar14" identifier - identifier) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (expression_statement "iVar14 = iVar6;" (assignment_expression "iVar14 = iVar6" identifier = identifier) ;) }))) (labeled_statement "LAB_001ad70f:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar14 < iVar13)" ( (binary_expression "iVar14 < iVar13" identifier < identifier) )) ;) }))) (expression_statement "local_a0[iVar17] = 0;" (assignment_expression "local_a0[iVar17] = 0" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = number_literal) ;) }))) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\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 local_a0;\n  }" { (return_statement "return local_a0;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "char * sh_modcase(char *string,char *pat,wchar_t flags)\n\n{\n  char cVar1;\n  long lVar2;\n  mbstate_t_conflict mVar3;\n  byte bVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  size_t sVar8;\n  char *pcVar9;\n  ushort **ppuVar10;\n  __int32_t **pp_Var11;\n  ulong uVar12;\n  long lVar13;\n  int iVar14;\n  int start;\n  wchar_t wVar15;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  char *local_a0;\n  wchar_t wc;\n  wchar_t wc_1;\n  mbstate_t_conflict state;\n  mbstate_t_conflict mps;\n  char mb [17];\n  \n  bVar20 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((string == (char *)0x0) || (*string == '\0')) {\n    local_a0 = (char *)xmalloc(1);\n    *local_a0 = '\0';\n  }\n  else {\n    state.__count = L'\0';\n    state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n    lVar13 = -1;\n    pcVar9 = string;\n    do {\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    } while (cVar1 != '\0');\n    iVar14 = ~(uint)lVar13 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar5 = (int)sVar8;\n    local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));\n    uVar6 = flags & 0x1000;\n    uVar16 = flags & 0xffffefff;\n    if (iVar14 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }\n    local_a0[iVar17] = '\0';\n  }\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "char * sh_modcase(char *string,char *pat,wchar_t flags)\n\n{\n  char cVar1;\n  long lVar2;\n  mbstate_t_conflict mVar3;\n  byte bVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  size_t sVar8;\n  char *pcVar9;\n  ushort **ppuVar10;\n  __int32_t **pp_Var11;\n  ulong uVar12;\n  long lVar13;\n  int iVar14;\n  int start;\n  wchar_t wVar15;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  char *local_a0;\n  wchar_t wc;\n  wchar_t wc_1;\n  mbstate_t_conflict state;\n  mbstate_t_conflict mps;\n  char mb [17];\n  \n  bVar20 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((string == (char *)0x0) || (*string == '\0')) {\n    local_a0 = (char *)xmalloc(1);\n    *local_a0 = '\0';\n  }\n  else {\n    state.__count = L'\0';\n    state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n    lVar13 = -1;\n    pcVar9 = string;\n    do {\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    } while (cVar1 != '\0');\n    iVar14 = ~(uint)lVar13 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar5 = (int)sVar8;\n    local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));\n    uVar6 = flags & 0x1000;\n    uVar16 = flags & 0xffffefff;\n    if (iVar14 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }\n    local_a0[iVar17] = '\0';\n  }\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (pointer_declarator "* sh_modcase(char *string,char *pat,wchar_t flags)" * (function_declarator "sh_modcase(char *string,char *pat,wchar_t flags)" identifier (parameter_list "(char *string,char *pat,wchar_t flags)" ( (parameter_declaration "char *string" primitive_type (pointer_declarator "*string" * identifier)) , (parameter_declaration "char *pat" primitive_type (pointer_declarator "*pat" * identifier)) , (parameter_declaration "wchar_t flags" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  long lVar2;\n  mbstate_t_conflict mVar3;\n  byte bVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  size_t sVar8;\n  char *pcVar9;\n  ushort **ppuVar10;\n  __int32_t **pp_Var11;\n  ulong uVar12;\n  long lVar13;\n  int iVar14;\n  int start;\n  wchar_t wVar15;\n  uint uVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  char *local_a0;\n  wchar_t wc;\n  wchar_t wc_1;\n  mbstate_t_conflict state;\n  mbstate_t_conflict mps;\n  char mb [17];\n  \n  bVar20 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((string == (char *)0x0) || (*string == '\0')) {\n    local_a0 = (char *)xmalloc(1);\n    *local_a0 = '\0';\n  }\n  else {\n    state.__count = L'\0';\n    state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n    lVar13 = -1;\n    pcVar9 = string;\n    do {\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    } while (cVar1 != '\0');\n    iVar14 = ~(uint)lVar13 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar5 = (int)sVar8;\n    local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));\n    uVar6 = flags & 0x1000;\n    uVar16 = flags & 0xffffefff;\n    if (iVar14 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }\n    local_a0[iVar17] = '\0';\n  }\n  if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "mbstate_t_conflict mVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "ushort **ppuVar10;" type_identifier (pointer_declarator "**ppuVar10" * (pointer_declarator "*ppuVar10" * identifier)) ;) (declaration "__int32_t **pp_Var11;" type_identifier (pointer_declarator "**pp_Var11" * (pointer_declarator "*pp_Var11" * identifier)) ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int start;" primitive_type identifier ;) (declaration "wchar_t wVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "char *local_a0;" primitive_type (pointer_declarator "*local_a0" * identifier) ;) (declaration "wchar_t wc;" type_identifier identifier ;) (declaration "wchar_t wc_1;" type_identifier identifier ;) (declaration "mbstate_t_conflict state;" type_identifier identifier ;) (declaration "mbstate_t_conflict mps;" type_identifier identifier ;) (declaration "char mb [17];" primitive_type (array_declarator "mb [17]" identifier [ number_literal ]) ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar2 = *(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) ))))) ;) (if_statement "if ((string == (char *)0x0) || (*string == '\0')) {\n    local_a0 = (char *)xmalloc(1);\n    *local_a0 = '\0';\n  }\n  else {\n    state.__count = L'\0';\n    state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n    lVar13 = -1;\n    pcVar9 = string;\n    do {\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    } while (cVar1 != '\0');\n    iVar14 = ~(uint)lVar13 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar5 = (int)sVar8;\n    local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));\n    uVar6 = flags & 0x1000;\n    uVar16 = flags & 0xffffefff;\n    if (iVar14 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }\n    local_a0[iVar17] = '\0';\n  }" if (parenthesized_expression "((string == (char *)0x0) || (*string == '\0'))" ( (binary_expression "(string == (char *)0x0) || (*string == '\0')" (parenthesized_expression "(string == (char *)0x0)" ( (binary_expression "string == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*string == '\0')" ( (binary_expression "*string == '\0'" (pointer_expression "*string" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    local_a0 = (char *)xmalloc(1);\n    *local_a0 = '\0';\n  }" { (expression_statement "local_a0 = (char *)xmalloc(1);" (assignment_expression "local_a0 = (char *)xmalloc(1)" identifier = (cast_expression "(char *)xmalloc(1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*local_a0 = '\0';" (assignment_expression "*local_a0 = '\0'" (pointer_expression "*local_a0" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }) (else_clause "else {\n    state.__count = L'\0';\n    state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n    lVar13 = -1;\n    pcVar9 = string;\n    do {\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    } while (cVar1 != '\0');\n    iVar14 = ~(uint)lVar13 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar5 = (int)sVar8;\n    local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));\n    uVar6 = flags & 0x1000;\n    uVar16 = flags & 0xffffefff;\n    if (iVar14 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }\n    local_a0[iVar17] = '\0';\n  }" else (compound_statement "{\n    state.__count = L'\0';\n    state.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n    lVar13 = -1;\n    pcVar9 = string;\n    do {\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    } while (cVar1 != '\0');\n    iVar14 = ~(uint)lVar13 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar5 = (int)sVar8;\n    local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));\n    uVar6 = flags & 0x1000;\n    uVar16 = flags & 0xffffefff;\n    if (iVar14 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }\n    local_a0[iVar17] = '\0';\n  }" { (expression_statement "state.__count = L'\0';" (assignment_expression "state.__count = L'\0'" (field_expression "state.__count" identifier . field_identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "state.__value = (anon_union_4_2_91654ee9_for___value)0x0;" (assignment_expression "state.__value = (anon_union_4_2_91654ee9_for___value)0x0" (field_expression "state.__value" 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 "lVar13 = -1;" (assignment_expression "lVar13 = -1" identifier = number_literal) ;) (expression_statement "pcVar9 = string;" (assignment_expression "pcVar9 = string" identifier = identifier) ;) (do_statement "do {\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar13 == 0) break;\n      lVar13 = lVar13 + -1;\n      cVar1 = *pcVar9;\n      pcVar9 = pcVar9 + 1;\n    }" { (if_statement "if (lVar13 == 0) break;" if (parenthesized_expression "(lVar13 == 0)" ( (binary_expression "lVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar13 = lVar13 + -1;" (assignment_expression "lVar13 = lVar13 + -1" identifier = (binary_expression "lVar13 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar9;" (assignment_expression "cVar1 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (expression_statement "pcVar9 = pcVar9 + 1;" (assignment_expression "pcVar9 = pcVar9 + 1" identifier = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar14 = ~(uint)lVar13 - 1;" (assignment_expression "iVar14 = ~(uint)lVar13 - 1" identifier = (binary_expression "~(uint)lVar13 - 1" (unary_expression "~(uint)lVar13" ~ (cast_expression "(uint)lVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (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 "iVar5 = (int)sVar8;" (assignment_expression "iVar5 = (int)sVar8" identifier = (cast_expression "(int)sVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1));" (assignment_expression "local_a0 = (char *)xmalloc((long)(iVar14 * 2 + 1))" identifier = (cast_expression "(char *)xmalloc((long)(iVar14 * 2 + 1))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)(iVar14 * 2 + 1))" identifier (argument_list "((long)(iVar14 * 2 + 1))" ( (cast_expression "(long)(iVar14 * 2 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar14 * 2 + 1)" ( (binary_expression "iVar14 * 2 + 1" (binary_expression "iVar14 * 2" identifier * number_literal) + number_literal) ))) ))))) ;) (expression_statement "uVar6 = flags & 0x1000;" (assignment_expression "uVar6 = flags & 0x1000" identifier = (binary_expression "flags & 0x1000" identifier & number_literal)) ;) (expression_statement "uVar16 = flags & 0xffffefff;" (assignment_expression "uVar16 = flags & 0xffffefff" identifier = (binary_expression "flags & 0xffffefff" identifier & number_literal)) ;) (if_statement "if (iVar14 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar17 = 0;\n    }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }" else (compound_statement "{\n      iVar19 = 0;\n      iVar17 = 0;\n      start = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);\n    }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "start = 0;" (assignment_expression "start = 0" identifier = number_literal) ;) (do_statement "do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      } while (start < iVar14);" do (compound_statement "{\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        wc = wVar15;\n        iVar7 = iswalnum(wVar15);\n        mVar3 = state;\n        if (iVar7 == 0) {\n          iVar19 = 0;\n        }\n        if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }\nLAB_001ad70f:\n      }" { (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 (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }\n        else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" if (parenthesized_expression "(sVar8 == 1)" ( (binary_expression "sVar8 == 1" identifier == number_literal) )) (compound_statement "{\nLAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];\n        }" { (labeled_statement "LAB_001ad1c0:\n          wVar15 = (wchar_t)string[start];" statement_identifier : (expression_statement "wVar15 = (wchar_t)string[start];" (assignment_expression "wVar15 = (wchar_t)string[start]" identifier = (cast_expression "(wchar_t)string[start]" ( (type_descriptor "wchar_t" type_identifier) ) (subscript_expression "string[start]" identifier [ identifier ]))) ;)) }) (else_clause "else {\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" else (compound_statement "{\n          __s = (byte *)(string + start);\n          bVar4 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar13 = -1;\n          pcVar9 = string;\n          do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar4;\n          if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" { (expression_statement "__s = (byte *)(string + start);" (assignment_expression "__s = (byte *)(string + start)" identifier = (cast_expression "(byte *)(string + start)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(string + start)" ( (binary_expression "string + start" identifier + identifier) )))) ;) (expression_statement "bVar4 = *__s;" (assignment_expression "bVar4 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar4 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar4 >> 5) * 4" (call_expression "(ulong)(bVar4 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 >> 5)" ( (binary_expression "bVar4 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001ad1c0;" goto statement_identifier ;)) (expression_statement "lVar13 = -1;" (assignment_expression "lVar13 = -1" identifier = number_literal) ;) (expression_statement "pcVar9 = string;" (assignment_expression "pcVar9 = string" identifier = identifier) ;) (do_statement "do {\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (lVar13 == 0) break;\n            lVar13 = lVar13 + -1;\n            cVar1 = *pcVar9;\n            pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar13 == 0) break;" if (parenthesized_expression "(lVar13 == 0)" ( (binary_expression "lVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar13 = lVar13 + -1;" (assignment_expression "lVar13 = lVar13 + -1" identifier = (binary_expression "lVar13 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar9;" (assignment_expression "cVar1 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (expression_statement "pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pcVar9 = pcVar9 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pcVar9 + (ulong)bVar20 * -2 + 1" (binary_expression "pcVar9 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "wVar15 = (int)(char)bVar4;" (assignment_expression "wVar15 = (int)(char)bVar4" identifier = (cast_expression "(int)(char)bVar4" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar4" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (if_statement "if (start < (int)(~(uint)lVar13 - 2)) {\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" if (parenthesized_expression "(start < (int)(~(uint)lVar13 - 2))" ( (binary_expression "start < (int)(~(uint)lVar13 - 2)" identifier < (cast_expression "(int)(~(uint)lVar13 - 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(~(uint)lVar13 - 2)" ( (binary_expression "~(uint)lVar13 - 2" (unary_expression "~(uint)lVar13" ~ (cast_expression "(uint)lVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )))) )) (compound_statement "{\n            mps.__count = L'\0';\n            mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;\n            sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);\n            wVar15 = wc_1;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" { (expression_statement "mps.__count = L'\0';" (assignment_expression "mps.__count = L'\0'" (field_expression "mps.__count" identifier . field_identifier) = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "mps.__value = (anon_union_4_2_91654ee9_for___value)0x0;" (assignment_expression "mps.__value = (anon_union_4_2_91654ee9_for___value)0x0" (field_expression "mps.__value" 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 "sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps);" (assignment_expression "sVar8 = mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps)" identifier = (call_expression "mbrtowc(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps)" identifier (argument_list "(&wc_1,(char *)__s,(long)(int)((~(uint)lVar13 - 1) - start),\n                            (mbstate_t *)&mps)" ( (pointer_expression "&wc_1" & identifier) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(long)(int)((~(uint)lVar13 - 1) - start)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((~(uint)lVar13 - 1) - start)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((~(uint)lVar13 - 1) - start)" ( (binary_expression "(~(uint)lVar13 - 1) - start" (parenthesized_expression "(~(uint)lVar13 - 1)" ( (binary_expression "~(uint)lVar13 - 1" (unary_expression "~(uint)lVar13" ~ (cast_expression "(uint)lVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )) - identifier) )))) , (cast_expression "(mbstate_t *)&mps" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&mps" & identifier)) )))) ;) (expression_statement "wVar15 = wc_1;" (assignment_expression "wVar15 = wc_1" identifier = identifier) ;) (if_statement "if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }" if (parenthesized_expression "(0xfffffffffffffffc < sVar8 - 1)" ( (binary_expression "0xfffffffffffffffc < sVar8 - 1" number_literal < (binary_expression "sVar8 - 1" identifier - number_literal)) )) (compound_statement "{\n              wVar15 = (wchar_t)(char)*__s;\n            }" { (expression_statement "wVar15 = (wchar_t)(char)*__s;" (assignment_expression "wVar15 = (wchar_t)(char)*__s" identifier = (binary_expression "(wchar_t)(char)*__s" (call_expression "(wchar_t)(char)" (parenthesized_expression "(wchar_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) })) })) }))) (expression_statement "wc = wVar15;" (assignment_expression "wc = wVar15" identifier = identifier) ;) (expression_statement "iVar7 = iswalnum(wVar15);" (assignment_expression "iVar7 = iswalnum(wVar15)" identifier = (call_expression "iswalnum(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (expression_statement "mVar3 = state;" (assignment_expression "mVar3 = state" identifier = identifier) ;) (if_statement "if (iVar7 == 0) {\n          iVar19 = 0;\n        }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar19 = 0;\n        }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) })) (if_statement "if (pat == (char *)0x0) {\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }\n        else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }" if (parenthesized_expression "(pat == (char *)0x0)" ( (binary_expression "pat == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar3 = state;\n          if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }\n        }" { (labeled_statement "LAB_001ad298:\n          if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" statement_identifier : (if_statement "if (uVar16 == 4) {\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }\n          else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" if (parenthesized_expression "(uVar16 == 4)" ( (binary_expression "uVar16 == 4" identifier == number_literal) )) (compound_statement "{\n            if (uVar6 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar5;\n            if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);\n            if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              wc = L'\0';\n            }\n            wVar15 = wc;\n            if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }\n          }" { (if_statement "if (uVar6 == 0) goto joined_r0x001ad3be;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x001ad3be;" goto statement_identifier ;)) (labeled_statement "joined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;" statement_identifier : (if_statement "if (iVar19 == 0) goto LAB_001ad32e;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;))) (labeled_statement "LAB_001ad3c4:\n            iVar19 = iVar5;" statement_identifier : (expression_statement "iVar19 = iVar5;" (assignment_expression "iVar19 = iVar5" identifier = identifier) ;)) (if_statement "if (iVar5 == 1) {\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(iVar5 == 1)" ( (binary_expression "iVar5 == 1" identifier == number_literal) )) (compound_statement "{\nLAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();\n              wVar15 = wc;\n              if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" { (labeled_statement "LAB_001ad3d4:\n              ppuVar10 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar10 = __ctype_b_loc();" (assignment_expression "ppuVar10 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (expression_statement "wVar15 = wc;" (assignment_expression "wVar15 = wc" identifier = identifier) ;) (if_statement "if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)) {\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }" if (parenthesized_expression "(((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180))" ( (binary_expression "((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(wc + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1)" ( (binary_expression "*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 1" (pointer_expression "*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1)" ( (binary_expression "(long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2" (cast_expression "(long)*ppuVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar10" * identifier)) + (binary_expression "(ulong)(uint)(wc & 0xff) * 2" (call_expression "(ulong)(uint)(wc & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(wc & 0xff)" ( (binary_expression "wc & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)(wc + L'\x80') < 0x180)" ( (binary_expression "(uint)(wc + L'\x80') < 0x180" (call_expression "(uint)(wc + L'\x80')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(wc + L'\x80')" ( (binary_expression "wc + L'\x80'" identifier + (char_literal "L'\x80'" L' escape_sequence ')) ))) < number_literal) ))) )) (compound_statement "{\n                pp_Var11 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var11)[wVar15];\n              }" { (expression_statement "pp_Var11 = __ctype_tolower_loc();" (assignment_expression "pp_Var11 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "wVar15 = (*pp_Var11)[wVar15];" (assignment_expression "wVar15 = (*pp_Var11)[wVar15]" identifier = (subscript_expression "(*pp_Var11)[wVar15]" (parenthesized_expression "(*pp_Var11)" ( (pointer_expression "*pp_Var11" * identifier) )) [ identifier ])) ;) })) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001ad345:\n            sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);" statement_identifier : (expression_statement "sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state);" (assignment_expression "sVar8 = mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state)" identifier = (call_expression "mbrtowc(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state)" identifier (argument_list "(&wc,string + start,(long)(iVar14 - start),(mbstate_t *)&state)" ( (pointer_expression "&wc" & identifier) , (binary_expression "string + start" identifier + identifier) , (cast_expression "(long)(iVar14 - start)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar14 - start)" ( (binary_expression "iVar14 - start" identifier - identifier) ))) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;)) (if_statement "if (0xfffffffffffffffd < sVar8) {\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(0xfffffffffffffffd < sVar8)" ( (binary_expression "0xfffffffffffffffd < sVar8" number_literal < identifier) )) (compound_statement "{\n              wc = (wchar_t)(byte)string[start];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = wc;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" { (expression_statement "wc = (wchar_t)(byte)string[start];" (assignment_expression "wc = (wchar_t)(byte)string[start]" identifier = (cast_expression "(wchar_t)(byte)string[start]" ( (type_descriptor "wchar_t" type_identifier) ) (cast_expression "(byte)string[start]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "string[start]" identifier [ identifier ])))) ;) (labeled_statement "LAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;" statement_identifier : (if_statement "if (uVar18 == 2) goto LAB_001ad542;" if (parenthesized_expression "(uVar18 == 2)" ( (binary_expression "uVar18 == 2" identifier == number_literal) )) (goto_statement "goto LAB_001ad542;" goto statement_identifier ;))) (expression_statement "wVar15 = wc;" (assignment_expression "wVar15 = wc" identifier = identifier) ;) (if_statement "if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" if (parenthesized_expression "((int)uVar18 < 3)" ( (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }" { (if_statement "if (uVar18 == 1) goto LAB_001ad3d4;" if (parenthesized_expression "(uVar18 == 1)" ( (binary_expression "uVar18 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001ad3d4;" goto statement_identifier ;)) }) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" else (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" if (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" ( (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) || (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) ))) )) (goto_statement "goto LAB_001ad5c8;" goto statement_identifier ;)))) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (sVar8 == 0) {\n              wc = L'\0';\n            }" if (parenthesized_expression "(sVar8 == 0)" ( (binary_expression "sVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              wc = L'\0';\n            }" { (expression_statement "wc = L'\0';" (assignment_expression "wc = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) })) (expression_statement "wVar15 = wc;" (assignment_expression "wVar15 = wc" identifier = identifier) ;) (if_statement "if (uVar18 == 2) {\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "(uVar18 == 2)" ( (binary_expression "uVar18 == 2" identifier == number_literal) )) (compound_statement "{\n              iVar7 = iswlower(wc);\n              if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }" { (expression_statement "iVar7 = iswlower(wc);" (assignment_expression "iVar7 = iswlower(wc)" identifier = (call_expression "iswlower(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n                wVar15 = towupper(wVar15);\n              }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                wVar15 = towupper(wVar15);\n              }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" else (if_statement "if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "((int)uVar18 < 3)" ( (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }" { (if_statement "if ((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)) {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "((uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0))" ( (binary_expression "(uVar18 == 1) && (iVar7 = iswupper(wc), iVar7 != 0)" (parenthesized_expression "(uVar18 == 1)" ( (binary_expression "uVar18 == 1" identifier == number_literal) )) && (parenthesized_expression "(iVar7 = iswupper(wc), iVar7 != 0)" ( (comma_expression "iVar7 = iswupper(wc), iVar7 != 0" (assignment_expression "iVar7 = iswupper(wc)" identifier = (call_expression "iswupper(wc)" identifier (argument_list "(wc)" ( identifier )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" else (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" ( (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) || (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) ))) )) (compound_statement "{\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" { (expression_statement "iVar7 = iswupper(wc);" (assignment_expression "iVar7 = iswupper(wc)" identifier = (call_expression "iswupper(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) (if_statement "if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" { (expression_statement "iVar7 = iswlower(wVar15);" (assignment_expression "iVar7 = iswlower(wVar15)" identifier = (call_expression "iswlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" else (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) }))) })))))) (if_statement "if ((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }" if (parenthesized_expression "((wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0))" ( (binary_expression "(wVar15 < L'Ā') &&\n               (bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)" (parenthesized_expression "(wVar15 < L'Ā')" ( (binary_expression "wVar15 < L'Ā'" identifier < (char_literal "L'Ā'" L' character ')) )) && (parenthesized_expression "(bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0)" ( (comma_expression "bVar4 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0" (assignment_expression "bVar4 = (byte)wVar15" identifier = (cast_expression "(byte)wVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) , (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar4 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar4 >> 5) * 4" (call_expression "(ulong)(bVar4 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 >> 5)" ( (binary_expression "bVar4 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n              local_a0[iVar17] = bVar4;\n              iVar17 = iVar17 + 1;\n            }" { (expression_statement "local_a0[iVar17] = bVar4;" (assignment_expression "local_a0[iVar17] = bVar4" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }" else (compound_statement "{\n              sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);\n              iVar7 = (int)sVar8;\n              if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }\n              strncpy(local_a0 + iVar17,mb,(long)iVar7);\n              iVar17 = iVar17 + iVar7;\n            }" { (expression_statement "sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state);" (assignment_expression "sVar8 = wcrtomb(mb,wVar15,(mbstate_t *)&state)" identifier = (call_expression "wcrtomb(mb,wVar15,(mbstate_t *)&state)" identifier (argument_list "(mb,wVar15,(mbstate_t *)&state)" ( identifier , identifier , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (expression_statement "iVar7 = (int)sVar8;" (assignment_expression "iVar7 = (int)sVar8" identifier = (cast_expression "(int)sVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar7) {\n                mb[iVar7] = '\0';\n              }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n                mb[iVar7] = '\0';\n              }" { (expression_statement "mb[iVar7] = '\0';" (assignment_expression "mb[iVar7] = '\0'" (subscript_expression "mb[iVar7]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "strncpy(local_a0 + iVar17,mb,(long)iVar7);" (call_expression "strncpy(local_a0 + iVar17,mb,(long)iVar7)" identifier (argument_list "(local_a0 + iVar17,mb,(long)iVar7)" ( (binary_expression "local_a0 + iVar17" identifier + identifier) , identifier , (cast_expression "(long)iVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) ;) (expression_statement "iVar17 = iVar17 + iVar7;" (assignment_expression "iVar17 = iVar17 + iVar7" identifier = (binary_expression "iVar17 + iVar7" identifier + identifier)) ;) }))) }) (else_clause "else {\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" else (compound_statement "{\n            if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar5;\n            if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar10 = __ctype_b_loc();\n            wVar15 = wc;\n            if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" { (if_statement "if (uVar16 == 8) {\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" if (parenthesized_expression "(uVar16 == 8)" ( (binary_expression "uVar16 == 8" identifier == number_literal) )) (compound_statement "{\n              if (uVar6 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" { (if_statement "if (uVar6 != 0) goto joined_r0x001ad328;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x001ad328;" goto statement_identifier ;)) (labeled_statement "joined_r0x001ad3be:\n              if (start < 1) goto LAB_001ad32e;" statement_identifier : (if_statement "if (start < 1) goto LAB_001ad32e;" if (parenthesized_expression "(start < 1)" ( (binary_expression "start < 1" identifier < number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;))) (goto_statement "goto LAB_001ad3c4;" goto statement_identifier ;) })) (if_statement "if (uVar16 != 0x40) {\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(uVar16 != 0x40)" ( (binary_expression "uVar16 != 0x40" identifier != number_literal) )) (compound_statement "{\n              if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = uVar16;\n              if (uVar16 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar5;\n              if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = wc;\n              iVar7 = iswupper(wc);\n              if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" { (if_statement "if (uVar16 == 0x80) {\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" if (parenthesized_expression "(uVar16 == 0x80)" ( (binary_expression "uVar16 == 0x80" identifier == number_literal) )) (compound_statement "{\n                if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" { (if_statement "if (uVar6 == 0) {\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                  uVar18 = (uint)(start < 1);\n                  iVar19 = 1;\n                }" { (expression_statement "uVar18 = (uint)(start < 1);" (assignment_expression "uVar18 = (uint)(start < 1)" identifier = (call_expression "(uint)(start < 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(start < 1)" ( (binary_expression "start < 1" identifier < number_literal) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" else (compound_statement "{\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" { (expression_statement "uVar18 = (uint)(iVar19 == 0);" (assignment_expression "uVar18 = (uint)(iVar19 == 0)" identifier = (call_expression "(uint)(iVar19 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }))) (labeled_statement "LAB_001ad2d3:\n                if (iVar5 != 1) goto LAB_001ad345;" statement_identifier : (if_statement "if (iVar5 != 1) goto LAB_001ad345;" if (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;))) (goto_statement "goto LAB_001ad5ac;" goto statement_identifier ;) })) (expression_statement "uVar18 = uVar16;" (assignment_expression "uVar18 = uVar16" identifier = identifier) ;) (if_statement "if (uVar16 != 0x10) goto LAB_001ad2d3;" if (parenthesized_expression "(uVar16 != 0x10)" ( (binary_expression "uVar16 != 0x10" identifier != number_literal) )) (goto_statement "goto LAB_001ad2d3;" goto statement_identifier ;)) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001ad44b;" goto statement_identifier ;)) (expression_statement "iVar19 = iVar5;" (assignment_expression "iVar19 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" if (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (compound_statement "{\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" { (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (labeled_statement "LAB_001ad5c8:\n              wVar15 = wc;" statement_identifier : (expression_statement "wVar15 = wc;" (assignment_expression "wVar15 = wc" identifier = identifier) ;)) (expression_statement "iVar7 = iswupper(wc);" (assignment_expression "iVar7 = iswupper(wc)" identifier = (call_expression "iswupper(wc)" identifier (argument_list "(wc)" ( identifier )))) ;) (if_statement "if (iVar7 == 0) {\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar7 = iswlower(wVar15);\n                if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" { (expression_statement "iVar7 = iswlower(wVar15);" (assignment_expression "iVar7 = iswlower(wVar15)" identifier = (call_expression "iswlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (if_statement "if (iVar7 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" if (parenthesized_expression "(iVar7 != 0)" ( (binary_expression "iVar7 != 0" identifier != number_literal) )) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" else (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) }))) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (uVar6 == 0) {\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              if (start < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar5;\n              wVar15 = wc;\n              if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" { (if_statement "if (start < 1) goto LAB_001ad32e;" if (parenthesized_expression "(start < 1)" ( (binary_expression "start < 1" identifier < number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;)) (labeled_statement "LAB_001ad44b:\n              iVar19 = iVar5;" statement_identifier : (expression_statement "iVar19 = iVar5;" (assignment_expression "iVar19 = iVar5" identifier = identifier) ;)) (expression_statement "wVar15 = wc;" (assignment_expression "wVar15 = wc" identifier = identifier) ;) (if_statement "if (iVar5 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" if (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (compound_statement "{\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001ad44b;" goto statement_identifier ;)) (labeled_statement "LAB_001ad32e:\n            iVar19 = iVar5;" statement_identifier : (expression_statement "iVar19 = iVar5;" (assignment_expression "iVar19 = iVar5" identifier = identifier) ;)) (if_statement "if (iVar5 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" if (parenthesized_expression "(iVar5 != 1)" ( (binary_expression "iVar5 != 1" identifier != number_literal) )) (compound_statement "{\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" { (expression_statement "uVar18 = 2;" (assignment_expression "uVar18 = 2" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (labeled_statement "LAB_001ad542:\n            ppuVar10 = __ctype_b_loc();" statement_identifier : (expression_statement "ppuVar10 = __ctype_b_loc();" (assignment_expression "ppuVar10 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) ;)) (expression_statement "wVar15 = wc;" (assignment_expression "wVar15 = wc" identifier = identifier) ;) (if_statement "if (((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)) {\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }" if (parenthesized_expression "(((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180))" ( (binary_expression "((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(wc + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2)" ( (binary_expression "*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1) & 2" (pointer_expression "*(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1)" ( (binary_expression "(long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar10 + (ulong)(uint)(wc & 0xff) * 2" (cast_expression "(long)*ppuVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar10" * identifier)) + (binary_expression "(ulong)(uint)(wc & 0xff) * 2" (call_expression "(ulong)(uint)(wc & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(wc & 0xff)" ( (binary_expression "wc & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)(wc + L'\x80') < 0x180)" ( (binary_expression "(uint)(wc + L'\x80') < 0x180" (call_expression "(uint)(wc + L'\x80')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(wc + L'\x80')" ( (binary_expression "wc + L'\x80'" identifier + (char_literal "L'\x80'" L' escape_sequence ')) ))) < number_literal) ))) )) (compound_statement "{\n              pp_Var11 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var11)[wVar15];\n            }" { (expression_statement "pp_Var11 = __ctype_toupper_loc();" (assignment_expression "pp_Var11 = __ctype_toupper_loc()" identifier = (call_expression "__ctype_toupper_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "wVar15 = (*pp_Var11)[wVar15];" (assignment_expression "wVar15 = (*pp_Var11)[wVar15]" identifier = (subscript_expression "(*pp_Var11)[wVar15]" (parenthesized_expression "(*pp_Var11)" ( (pointer_expression "*pp_Var11" * identifier) )) [ identifier ])) ;) })) (labeled_statement "LAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;" statement_identifier : (expression_statement "local_a0[iVar17] = (char)wVar15;" (assignment_expression "local_a0[iVar17] = (char)wVar15" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = (cast_expression "(char)wVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;)) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) })))) (expression_statement "mVar3 = state;" (assignment_expression "mVar3 = state" identifier = identifier) ;) (if_statement "if (locale_mb_cur_max < 2) {\n            start = start + 1;\n            state = mVar3;\n          }\n          else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\n            start = start + 1;\n            state = mVar3;\n          }" { (expression_statement "start = start + 1;" (assignment_expression "start = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;) (expression_statement "state = mVar3;" (assignment_expression "state = mVar3" identifier = identifier) ;) }) (else_clause "else {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }" else (compound_statement "{\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            start = start + (int)uVar12;\n          }" { (expression_statement "bVar4 = string[start];" (assignment_expression "bVar4 = string[start]" identifier = (subscript_expression "string[start]" identifier [ identifier ])) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar4 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar4 >> 5) * 4" (call_expression "(ulong)(bVar4 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 >> 5)" ( (binary_expression "bVar4 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }\n            }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar4 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar4 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar4 < '\0')" ( (binary_expression "(char)bVar4 < '\0'" (cast_expression "(char)bVar4" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }\n              }" { (expression_statement "uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);" (assignment_expression "uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "string + start" identifier + identifier) , (cast_expression "(long)(iVar14 - start)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar14 - start)" ( (binary_expression "iVar14 - start" identifier - identifier) ))) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (0xfffffffffffffffd < uVar12) {\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }" if (parenthesized_expression "(0xfffffffffffffffd < uVar12)" ( (binary_expression "0xfffffffffffffffd < uVar12" number_literal < identifier) )) (compound_statement "{\n                  start = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad70f;\n                }" { (expression_statement "start = start + 1;" (assignment_expression "start = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;) (expression_statement "state = mVar3;" (assignment_expression "state = mVar3" identifier = identifier) ;) (goto_statement "goto LAB_001ad70f;" goto statement_identifier ;) })) }) (else_clause "else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }" else (compound_statement "{\n                uVar12 = (ulong)(bVar4 != 0);\n              }" { (expression_statement "uVar12 = (ulong)(bVar4 != 0);" (assignment_expression "uVar12 = (ulong)(bVar4 != 0)" identifier = (call_expression "(ulong)(bVar4 != 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar12 == 0) {\n                start = start + 1;\n                goto LAB_001ad70f;\n              }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                start = start + 1;\n                goto LAB_001ad70f;\n              }" { (expression_statement "start = start + 1;" (assignment_expression "start = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad70f;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar12 = 1;\n            }" else (compound_statement "{\n              uVar12 = 1;\n            }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }))) (expression_statement "start = start + (int)uVar12;" (assignment_expression "start = start + (int)uVar12" identifier = (binary_expression "start + (int)uVar12" identifier + (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) }) (else_clause "else {\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }" else (compound_statement "{\n          iVar7 = start + 1;\n          state = mVar3;\n          if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }\nLAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);\n          wVar15 = strmatch(pat,pcVar9,L' ');\n          free(pcVar9);\n          if (wVar15 != L'\x01') goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));\n          iVar17 = iVar17 + (iVar7 - start);\n          iVar19 = 1;\n          start = iVar7;\n        }" { (expression_statement "iVar7 = start + 1;" (assignment_expression "iVar7 = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;) (expression_statement "state = mVar3;" (assignment_expression "state = mVar3" identifier = identifier) ;) (if_statement "if (1 < locale_mb_cur_max) {\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }" if (parenthesized_expression "(1 < locale_mb_cur_max)" ( (binary_expression "1 < locale_mb_cur_max" number_literal < identifier) )) (compound_statement "{\n            bVar4 = string[start];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }\n            iVar7 = start + (int)uVar12;\n          }" { (expression_statement "bVar4 = string[start];" (assignment_expression "bVar4 = string[start]" identifier = (subscript_expression "string[start]" identifier [ identifier ])) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar12 = 1;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4) >> (bVar4 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar4 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar4 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar4 >> 5) * 4" (call_expression "(ulong)(bVar4 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 >> 5)" ( (binary_expression "bVar4 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar4 & 0x1f)" ( (binary_expression "bVar4 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }\n              if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }\n            }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar4 < '\0')) {\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar4 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar4 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar4 < '\0')" ( (binary_expression "(char)bVar4 < '\0'" (cast_expression "(char)bVar4" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);\n                if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }\n              }" { (expression_statement "uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state);" (assignment_expression "uVar12 = mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state)" identifier (argument_list "((wchar_t *)0x0,string + start,(long)(iVar14 - start),\n                                 (mbstate_t *)&state)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "string + start" identifier + identifier) , (cast_expression "(long)(iVar14 - start)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar14 - start)" ( (binary_expression "iVar14 - start" identifier - identifier) ))) , (cast_expression "(mbstate_t *)&state" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&state" & identifier)) )))) ;) (if_statement "if (0xfffffffffffffffd < uVar12) {\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }" if (parenthesized_expression "(0xfffffffffffffffd < uVar12)" ( (binary_expression "0xfffffffffffffffd < uVar12" number_literal < identifier) )) (compound_statement "{\n                  iVar7 = start + 1;\n                  state = mVar3;\n                  goto LAB_001ad263;\n                }" { (expression_statement "iVar7 = start + 1;" (assignment_expression "iVar7 = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;) (expression_statement "state = mVar3;" (assignment_expression "state = mVar3" identifier = identifier) ;) (goto_statement "goto LAB_001ad263;" goto statement_identifier ;) })) }) (else_clause "else {\n                uVar12 = (ulong)(bVar4 != 0);\n              }" else (compound_statement "{\n                uVar12 = (ulong)(bVar4 != 0);\n              }" { (expression_statement "uVar12 = (ulong)(bVar4 != 0);" (assignment_expression "uVar12 = (ulong)(bVar4 != 0)" identifier = (call_expression "(ulong)(bVar4 != 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar4 != 0)" ( (binary_expression "bVar4 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar12 == 0) {\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar7 = start + 1;\n                goto LAB_001ad263;\n              }" { (expression_statement "iVar7 = start + 1;" (assignment_expression "iVar7 = start + 1" identifier = (binary_expression "start + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad263;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar12 = 1;\n            }" else (compound_statement "{\n              uVar12 = 1;\n            }" { (expression_statement "uVar12 = 1;" (assignment_expression "uVar12 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar7 = start + (int)uVar12;" (assignment_expression "iVar7 = start + (int)uVar12" identifier = (binary_expression "start + (int)uVar12" identifier + (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "LAB_001ad263:\n          pcVar9 = substring(string,start,iVar7);" statement_identifier : (expression_statement "pcVar9 = substring(string,start,iVar7);" (assignment_expression "pcVar9 = substring(string,start,iVar7)" identifier = (call_expression "substring(string,start,iVar7)" identifier (argument_list "(string,start,iVar7)" ( identifier , identifier , identifier )))) ;)) (expression_statement "wVar15 = strmatch(pat,pcVar9,L' ');" (assignment_expression "wVar15 = strmatch(pat,pcVar9,L' ')" identifier = (call_expression "strmatch(pat,pcVar9,L' ')" identifier (argument_list "(pat,pcVar9,L' ')" ( identifier , identifier , (char_literal "L' '" L' character ') )))) ;) (expression_statement "free(pcVar9);" (call_expression "free(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier ))) ;) (if_statement "if (wVar15 != L'\x01') goto LAB_001ad298;" if (parenthesized_expression "(wVar15 != L'\x01')" ( (binary_expression "wVar15 != L'\x01'" identifier != (char_literal "L'\x01'" L' escape_sequence ')) )) (goto_statement "goto LAB_001ad298;" goto statement_identifier ;)) (expression_statement "memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start));" (call_expression "memcpy(local_a0 + iVar17,string + start,(long)(iVar7 - start))" identifier (argument_list "(local_a0 + iVar17,string + start,(long)(iVar7 - start))" ( (binary_expression "local_a0 + iVar17" identifier + identifier) , (binary_expression "string + start" identifier + identifier) , (cast_expression "(long)(iVar7 - start)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar7 - start)" ( (binary_expression "iVar7 - start" identifier - identifier) ))) ))) ;) (expression_statement "iVar17 = iVar17 + (iVar7 - start);" (assignment_expression "iVar17 = iVar17 + (iVar7 - start)" identifier = (binary_expression "iVar17 + (iVar7 - start)" identifier + (parenthesized_expression "(iVar7 - start)" ( (binary_expression "iVar7 - start" identifier - identifier) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (expression_statement "start = iVar7;" (assignment_expression "start = iVar7" identifier = identifier) ;) }))) (labeled_statement "LAB_001ad70f:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(start < iVar14)" ( (binary_expression "start < iVar14" identifier < identifier) )) ;) }))) (expression_statement "local_a0[iVar17] = '\0';" (assignment_expression "local_a0[iVar17] = '\0'" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (if_statement "if (lVar2 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }" if (parenthesized_expression "(lVar2 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar2 == *(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 local_a0;\n  }" { (return_statement "return local_a0;" return identifier ;) })) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined1 * sh_modcase(char *param_1,long param_2,uint param_3)\n\n{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "undefined1 * sh_modcase(char *param_1,long param_2,uint param_3)\n\n{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    \n  __stack_chk_fail();\n}" type_identifier (pointer_declarator "* sh_modcase(char *param_1,long param_2,uint param_3)" * (function_declarator "sh_modcase(char *param_1,long param_2,uint param_3)" identifier (parameter_list "(char *param_1,long param_2,uint param_3)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_3" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "mbstate_t mVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "ushort **ppuVar9;" type_identifier (pointer_declarator "**ppuVar9" * (pointer_declarator "*ppuVar9" * identifier)) ;) (declaration "__int32_t **pp_Var10;" type_identifier (pointer_declarator "**pp_Var10" * (pointer_declarator "*pp_Var10" * identifier)) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "wchar_t wVar15;" type_identifier identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar20;" type_identifier identifier ;) (declaration "undefined1 *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "wchar_t local_70;" type_identifier identifier ;) (declaration "wchar_t local_6c;" type_identifier identifier ;) (declaration "mbstate_t local_68;" type_identifier identifier ;) (declaration "mbstate_t local_60;" type_identifier identifier ;) (declaration "char local_58 [24];" primitive_type (array_declarator "local_58 [24]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 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) ))))) ;) (if_statement "if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" if (parenthesized_expression "((param_1 == (char *)0x0) || (*param_1 == '\0'))" ( (binary_expression "(param_1 == (char *)0x0) || (*param_1 == '\0')" (parenthesized_expression "(param_1 == (char *)0x0)" ( (binary_expression "param_1 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*param_1 == '\0')" ( (binary_expression "*param_1 == '\0'" (pointer_expression "*param_1" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }" { (expression_statement "local_a0 = (undefined1 *)xmalloc(1);" (assignment_expression "local_a0 = (undefined1 *)xmalloc(1)" identifier = (cast_expression "(undefined1 *)xmalloc(1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "*local_a0 = 0;" (assignment_expression "*local_a0 = 0" (pointer_expression "*local_a0" * identifier) = number_literal) ;) }) (else_clause "else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" else (compound_statement "{\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" { (expression_statement "local_68.__count = 0;" (assignment_expression "local_68.__count = 0" (field_expression "local_68.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_68.__value = (_union_27)0x0;" (assignment_expression "local_68.__value = (_union_27)0x0" (field_expression "local_68.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar16 = param_1;" (assignment_expression "pcVar16 = param_1" identifier = identifier) ;) (do_statement "do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar16;" (assignment_expression "cVar1 = *pcVar16" identifier = (pointer_expression "*pcVar16" * identifier)) ;) (expression_statement "pcVar16 = pcVar16 + 1;" (assignment_expression "pcVar16 = pcVar16 + 1" identifier = (binary_expression "pcVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "iVar13 = ~(uint)lVar12 - 1;" (assignment_expression "iVar13 = ~(uint)lVar12 - 1" identifier = (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (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 "iVar4 = (int)sVar8;" (assignment_expression "iVar4 = (int)sVar8" identifier = (cast_expression "(int)sVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));" (assignment_expression "local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1))" identifier = (cast_expression "(undefined1 *)xmalloc((long)(iVar13 * 2 + 1))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)(iVar13 * 2 + 1))" identifier (argument_list "((long)(iVar13 * 2 + 1))" ( (cast_expression "(long)(iVar13 * 2 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 * 2 + 1)" ( (binary_expression "iVar13 * 2 + 1" (binary_expression "iVar13 * 2" identifier * number_literal) + number_literal) ))) ))))) ;) (expression_statement "uVar5 = param_3 & 0x1000;" (assignment_expression "uVar5 = param_3 & 0x1000" identifier = (binary_expression "param_3 & 0x1000" identifier & number_literal)) ;) (expression_statement "param_3 = param_3 & 0xffffefff;" (assignment_expression "param_3 = param_3 & 0xffffefff" identifier = (binary_expression "param_3 & 0xffffefff" identifier & number_literal)) ;) (if_statement "if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" if (parenthesized_expression "(iVar13 < 1)" ( (binary_expression "iVar13 < 1" identifier < number_literal) )) (compound_statement "{\n      iVar17 = 0;\n    }" { (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" else (compound_statement "{\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (do_statement "do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);" do (compound_statement "{\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      }" { (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 (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" if (parenthesized_expression "(sVar8 == 1)" ( (binary_expression "sVar8 == 1" identifier == number_literal) )) (compound_statement "{\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }" { (labeled_statement "LAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];" statement_identifier : (expression_statement "wVar15 = (wchar_t)param_1[iVar14];" (assignment_expression "wVar15 = (wchar_t)param_1[iVar14]" identifier = (cast_expression "(wchar_t)param_1[iVar14]" ( (type_descriptor "wchar_t" type_identifier) ) (subscript_expression "param_1[iVar14]" identifier [ identifier ]))) ;)) }) (else_clause "else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" else (compound_statement "{\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" { (expression_statement "__s = (byte *)(param_1 + iVar14);" (assignment_expression "__s = (byte *)(param_1 + iVar14)" identifier = (cast_expression "(byte *)(param_1 + iVar14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar14)" ( (binary_expression "param_1 + iVar14" identifier + identifier) )))) ;) (expression_statement "bVar3 = *__s;" (assignment_expression "bVar3 = *__s" identifier = (pointer_expression "*__s" * identifier)) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001ad1c0;" goto statement_identifier ;)) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar16 = param_1;" (assignment_expression "pcVar16 = param_1" identifier = identifier) ;) (do_statement "do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');" do (compound_statement "{\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar16;" (assignment_expression "cVar1 = *pcVar16" identifier = (pointer_expression "*pcVar16" * identifier)) ;) (expression_statement "pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1" identifier = (binary_expression "pcVar16 + (ulong)bVar20 * -2 + 1" (binary_expression "pcVar16 + (ulong)bVar20 * -2" identifier + (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "wVar15 = (int)(char)bVar3;" (assignment_expression "wVar15 = (int)(char)bVar3" identifier = (cast_expression "(int)(char)bVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier))) ;) (if_statement "if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" if (parenthesized_expression "(iVar14 < (int)(~(uint)lVar12 - 2))" ( (binary_expression "iVar14 < (int)(~(uint)lVar12 - 2)" identifier < (cast_expression "(int)(~(uint)lVar12 - 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(~(uint)lVar12 - 2)" ( (binary_expression "~(uint)lVar12 - 2" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )))) )) (compound_statement "{\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" { (expression_statement "local_60.__count = 0;" (assignment_expression "local_60.__count = 0" (field_expression "local_60.__count" identifier . field_identifier) = number_literal) ;) (expression_statement "local_60.__value = (_union_27)0x0;" (assignment_expression "local_60.__value = (_union_27)0x0" (field_expression "local_60.__value" identifier . field_identifier) = (cast_expression "(_union_27)0x0" ( (type_descriptor "_union_27" type_identifier) ) number_literal)) ;) (expression_statement "sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);" (assignment_expression "sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" identifier = (call_expression "mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" identifier (argument_list "(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" ( (pointer_expression "&local_6c" & identifier) , (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(long)(int)((~(uint)lVar12 - 1) - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)((~(uint)lVar12 - 1) - iVar14)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((~(uint)lVar12 - 1) - iVar14)" ( (binary_expression "(~(uint)lVar12 - 1) - iVar14" (parenthesized_expression "(~(uint)lVar12 - 1)" ( (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal) )) - identifier) )))) , (pointer_expression "&local_60" & identifier) )))) ;) (expression_statement "wVar15 = local_6c;" (assignment_expression "wVar15 = local_6c" identifier = identifier) ;) (if_statement "if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }" if (parenthesized_expression "(0xfffffffffffffffc < sVar8 - 1)" ( (binary_expression "0xfffffffffffffffc < sVar8 - 1" number_literal < (binary_expression "sVar8 - 1" identifier - number_literal)) )) (compound_statement "{\n              wVar15 = (wchar_t)(char)*__s;\n            }" { (expression_statement "wVar15 = (wchar_t)(char)*__s;" (assignment_expression "wVar15 = (wchar_t)(char)*__s" identifier = (binary_expression "(wchar_t)(char)*__s" (call_expression "(wchar_t)(char)" (parenthesized_expression "(wchar_t)" ( identifier )) (argument_list "(char)" ( identifier ))) * identifier)) ;) })) })) }))) (expression_statement "local_70 = wVar15;" (assignment_expression "local_70 = wVar15" identifier = identifier) ;) (expression_statement "iVar6 = iswalnum(wVar15);" (assignment_expression "iVar6 = iswalnum(wVar15)" identifier = (call_expression "iswalnum(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (expression_statement "mVar2 = local_68;" (assignment_expression "mVar2 = local_68" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n          iVar19 = 0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar19 = 0;\n        }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) })) (if_statement "if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }" { (labeled_statement "LAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" statement_identifier : (if_statement "if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" if (parenthesized_expression "(param_3 == 4)" ( (binary_expression "param_3 == 4" identifier == number_literal) )) (compound_statement "{\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }" { (if_statement "if (uVar5 == 0) goto joined_r0x001ad3be;" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x001ad3be;" goto statement_identifier ;)) (labeled_statement "joined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;" statement_identifier : (if_statement "if (iVar19 == 0) goto LAB_001ad32e;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;))) (labeled_statement "LAB_001ad3c4:\n            iVar19 = iVar4;" statement_identifier : (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;)) (if_statement "if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(iVar4 == 1)" ( (binary_expression "iVar4 == 1" identifier == number_literal) )) (compound_statement "{\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" { (labeled_statement "LAB_001ad3d4:\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 "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }" if (parenthesized_expression "(((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180))" ( (binary_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1)" ( (binary_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1" (pointer_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2" (cast_expression "(long)*ppuVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar9" * identifier)) + (binary_expression "(ulong)(uint)(local_70 & 0xff) * 2" (call_expression "(ulong)(uint)(local_70 & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(local_70 & 0xff)" ( (binary_expression "local_70 & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)(local_70 + L'\x80') < 0x180)" ( (binary_expression "(uint)(local_70 + L'\x80') < 0x180" (call_expression "(uint)(local_70 + L'\x80')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_70 + L'\x80')" ( (binary_expression "local_70 + L'\x80'" identifier + (char_literal "L'\x80'" L' escape_sequence ')) ))) < number_literal) ))) )) (compound_statement "{\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }" { (expression_statement "pp_Var10 = __ctype_tolower_loc();" (assignment_expression "pp_Var10 = __ctype_tolower_loc()" identifier = (call_expression "__ctype_tolower_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "wVar15 = (*pp_Var10)[wVar15];" (assignment_expression "wVar15 = (*pp_Var10)[wVar15]" identifier = (subscript_expression "(*pp_Var10)[wVar15]" (parenthesized_expression "(*pp_Var10)" ( (pointer_expression "*pp_Var10" * identifier) )) [ identifier ])) ;) })) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (labeled_statement "LAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" statement_identifier : (expression_statement "sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier = (call_expression "mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier (argument_list "(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" ( (pointer_expression "&local_70" & identifier) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar13 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 - iVar14)" ( (binary_expression "iVar13 - iVar14" identifier - identifier) ))) , (pointer_expression "&local_68" & identifier) )))) ;)) (if_statement "if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(0xfffffffffffffffd < sVar8)" ( (binary_expression "0xfffffffffffffffd < sVar8" number_literal < identifier) )) (compound_statement "{\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" { (expression_statement "local_70 = (wchar_t)(byte)param_1[iVar14];" (assignment_expression "local_70 = (wchar_t)(byte)param_1[iVar14]" identifier = (cast_expression "(wchar_t)(byte)param_1[iVar14]" ( (type_descriptor "wchar_t" type_identifier) ) (cast_expression "(byte)param_1[iVar14]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "param_1[iVar14]" identifier [ identifier ])))) ;) (labeled_statement "LAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;" statement_identifier : (if_statement "if (uVar18 == 2) goto LAB_001ad542;" if (parenthesized_expression "(uVar18 == 2)" ( (binary_expression "uVar18 == 2" identifier == number_literal) )) (goto_statement "goto LAB_001ad542;" goto statement_identifier ;))) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" if (parenthesized_expression "((int)uVar18 < 3)" ( (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }" { (if_statement "if (uVar18 == 1) goto LAB_001ad3d4;" if (parenthesized_expression "(uVar18 == 1)" ( (binary_expression "uVar18 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001ad3d4;" goto statement_identifier ;)) }) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" else (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" if (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" ( (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) || (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) ))) )) (goto_statement "goto LAB_001ad5c8;" goto statement_identifier ;)))) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (sVar8 == 0) {\n              local_70 = L'\0';\n            }" if (parenthesized_expression "(sVar8 == 0)" ( (binary_expression "sVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              local_70 = L'\0';\n            }" { (expression_statement "local_70 = L'\0';" (assignment_expression "local_70 = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) })) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "(uVar18 == 2)" ( (binary_expression "uVar18 == 2" identifier == number_literal) )) (compound_statement "{\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }" { (expression_statement "iVar6 = iswlower(local_70);" (assignment_expression "iVar6 = iswlower(local_70)" identifier = (call_expression "iswlower(local_70)" identifier (argument_list "(local_70)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                wVar15 = towupper(wVar15);\n              }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" else (if_statement "if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "((int)uVar18 < 3)" ( (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }" { (if_statement "if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0))" ( (binary_expression "(uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)" (parenthesized_expression "(uVar18 == 1)" ( (binary_expression "uVar18 == 1" identifier == number_literal) )) && (parenthesized_expression "(iVar6 = iswupper(local_70), iVar6 != 0)" ( (comma_expression "iVar6 = iswupper(local_70), iVar6 != 0" (assignment_expression "iVar6 = iswupper(local_70)" identifier = (call_expression "iswupper(local_70)" identifier (argument_list "(local_70)" ( identifier )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" else (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" if (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" ( (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" ( (binary_expression "uVar18 == 0x10" identifier == number_literal) )) || (parenthesized_expression "(uVar18 == 0x20)" ( (binary_expression "uVar18 == 0x20" identifier == number_literal) ))) )) (compound_statement "{\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" { (expression_statement "iVar6 = iswupper(local_70);" (assignment_expression "iVar6 = iswupper(local_70)" identifier = (call_expression "iswupper(local_70)" identifier (argument_list "(local_70)" ( identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" { (expression_statement "iVar6 = iswlower(wVar15);" (assignment_expression "iVar6 = iswlower(wVar15)" identifier = (call_expression "iswlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" else (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) }))) })))))) (if_statement "if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" if (parenthesized_expression "((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0))" ( (binary_expression "(wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" (parenthesized_expression "(wVar15 < L'Ā')" ( (binary_expression "wVar15 < L'Ā'" identifier < (char_literal "L'Ā'" L' character ')) )) && (parenthesized_expression "(bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" ( (comma_expression "bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (assignment_expression "bVar3 = (byte)wVar15" identifier = (cast_expression "(byte)wVar15" ( (type_descriptor "byte" type_identifier) ) identifier)) , (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }" { (expression_statement "local_a0[iVar17] = bVar3;" (assignment_expression "local_a0[iVar17] = bVar3" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" else (compound_statement "{\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" { (expression_statement "sVar8 = wcrtomb(local_58,wVar15,&local_68);" (assignment_expression "sVar8 = wcrtomb(local_58,wVar15,&local_68)" identifier = (call_expression "wcrtomb(local_58,wVar15,&local_68)" identifier (argument_list "(local_58,wVar15,&local_68)" ( identifier , identifier , (pointer_expression "&local_68" & identifier) )))) ;) (expression_statement "iVar6 = (int)sVar8;" (assignment_expression "iVar6 = (int)sVar8" identifier = (cast_expression "(int)sVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n                local_58[iVar6] = '\0';\n              }" { (expression_statement "local_58[iVar6] = '\0';" (assignment_expression "local_58[iVar6] = '\0'" (subscript_expression "local_58[iVar6]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "strncpy(local_a0 + iVar17,local_58,(long)iVar6);" (call_expression "strncpy(local_a0 + iVar17,local_58,(long)iVar6)" identifier (argument_list "(local_a0 + iVar17,local_58,(long)iVar6)" ( (binary_expression "local_a0 + iVar17" identifier + identifier) , identifier , (cast_expression "(long)iVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) ))) ;) (expression_statement "iVar17 = iVar17 + iVar6;" (assignment_expression "iVar17 = iVar17 + iVar6" identifier = (binary_expression "iVar17 + iVar6" identifier + identifier)) ;) }))) }) (else_clause "else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" else (compound_statement "{\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" { (if_statement "if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" if (parenthesized_expression "(param_3 == 8)" ( (binary_expression "param_3 == 8" identifier == number_literal) )) (compound_statement "{\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" { (if_statement "if (uVar5 != 0) goto joined_r0x001ad328;" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x001ad328;" goto statement_identifier ;)) (labeled_statement "joined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;" statement_identifier : (if_statement "if (iVar14 < 1) goto LAB_001ad32e;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;))) (goto_statement "goto LAB_001ad3c4;" goto statement_identifier ;) })) (if_statement "if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(param_3 != 0x40)" ( (binary_expression "param_3 != 0x40" identifier != number_literal) )) (compound_statement "{\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" { (if_statement "if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" if (parenthesized_expression "(param_3 == 0x80)" ( (binary_expression "param_3 == 0x80" identifier == number_literal) )) (compound_statement "{\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" { (if_statement "if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }" { (expression_statement "uVar18 = (uint)(iVar14 < 1);" (assignment_expression "uVar18 = (uint)(iVar14 < 1)" identifier = (call_expression "(uint)(iVar14 < 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }) (else_clause "else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" else (compound_statement "{\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" { (expression_statement "uVar18 = (uint)(iVar19 == 0);" (assignment_expression "uVar18 = (uint)(iVar19 == 0)" identifier = (call_expression "(uint)(iVar19 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }))) (labeled_statement "LAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;" statement_identifier : (if_statement "if (iVar4 != 1) goto LAB_001ad345;" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;))) (goto_statement "goto LAB_001ad5ac;" goto statement_identifier ;) })) (expression_statement "uVar18 = param_3;" (assignment_expression "uVar18 = param_3" identifier = identifier) ;) (if_statement "if (param_3 != 0x10) goto LAB_001ad2d3;" if (parenthesized_expression "(param_3 != 0x10)" ( (binary_expression "param_3 != 0x10" identifier != number_literal) )) (goto_statement "goto LAB_001ad2d3;" goto statement_identifier ;)) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001ad44b;" goto statement_identifier ;)) (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;) (if_statement "if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" { (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (labeled_statement "LAB_001ad5c8:\n              wVar15 = local_70;" statement_identifier : (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;)) (expression_statement "iVar6 = iswupper(local_70);" (assignment_expression "iVar6 = iswupper(local_70)" identifier = (call_expression "iswupper(local_70)" identifier (argument_list "(local_70)" ( identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" { (expression_statement "iVar6 = iswlower(wVar15);" (assignment_expression "iVar6 = iswlower(wVar15)" identifier = (call_expression "iswlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) (if_statement "if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" { (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" identifier = (call_expression "towupper(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) })) }) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" else (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" { (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" identifier = (call_expression "towlower(wVar15)" identifier (argument_list "(wVar15)" ( identifier )))) ;) }))) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" { (if_statement "if (iVar14 < 1) goto LAB_001ad32e;" if (parenthesized_expression "(iVar14 < 1)" ( (binary_expression "iVar14 < 1" identifier < number_literal) )) (goto_statement "goto LAB_001ad32e;" goto statement_identifier ;)) (labeled_statement "LAB_001ad44b:\n              iVar19 = iVar4;" statement_identifier : (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;)) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (goto_statement "goto LAB_001ad4ce;" goto statement_identifier ;) })) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001ad44b;" goto statement_identifier ;)) (labeled_statement "LAB_001ad32e:\n            iVar19 = iVar4;" statement_identifier : (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" identifier = identifier) ;)) (if_statement "if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" { (expression_statement "uVar18 = 2;" (assignment_expression "uVar18 = 2" identifier = number_literal) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_001ad345;" goto statement_identifier ;) })) (labeled_statement "LAB_001ad542:\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 "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" identifier = identifier) ;) (if_statement "if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }" if (parenthesized_expression "(((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180))" ( (binary_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0)" ( (binary_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2)" ( (binary_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2" (pointer_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" ( (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2" (cast_expression "(long)*ppuVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar9" * identifier)) + (binary_expression "(ulong)(uint)(local_70 & 0xff) * 2" (call_expression "(ulong)(uint)(local_70 & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(local_70 & 0xff)" ( (binary_expression "local_70 & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "((uint)(local_70 + L'\x80') < 0x180)" ( (binary_expression "(uint)(local_70 + L'\x80') < 0x180" (call_expression "(uint)(local_70 + L'\x80')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_70 + L'\x80')" ( (binary_expression "local_70 + L'\x80'" identifier + (char_literal "L'\x80'" L' escape_sequence ')) ))) < number_literal) ))) )) (compound_statement "{\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }" { (expression_statement "pp_Var10 = __ctype_toupper_loc();" (assignment_expression "pp_Var10 = __ctype_toupper_loc()" identifier = (call_expression "__ctype_toupper_loc()" identifier (argument_list "()" ( )))) ;) (expression_statement "wVar15 = (*pp_Var10)[wVar15];" (assignment_expression "wVar15 = (*pp_Var10)[wVar15]" identifier = (subscript_expression "(*pp_Var10)[wVar15]" (parenthesized_expression "(*pp_Var10)" ( (pointer_expression "*pp_Var10" * identifier) )) [ identifier ])) ;) })) (labeled_statement "LAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;" statement_identifier : (expression_statement "local_a0[iVar17] = (char)wVar15;" (assignment_expression "local_a0[iVar17] = (char)wVar15" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = (cast_expression "(char)wVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;)) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) })))) (expression_statement "mVar2 = local_68;" (assignment_expression "mVar2 = local_68" identifier = identifier) ;) (if_statement "if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" if (parenthesized_expression "(locale_mb_cur_max < 2)" ( (binary_expression "locale_mb_cur_max < 2" identifier < number_literal) )) (compound_statement "{\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }" { (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" else (compound_statement "{\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" { (expression_statement "bVar3 = param_1[iVar14];" (assignment_expression "bVar3 = param_1[iVar14]" identifier = (subscript_expression "param_1[iVar14]" identifier [ identifier ])) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar3 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar3 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }" { (expression_statement "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier (argument_list "((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar13 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 - iVar14)" ( (binary_expression "iVar13 - iVar14" identifier - identifier) ))) , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }" if (parenthesized_expression "(0xfffffffffffffffd < uVar11)" ( (binary_expression "0xfffffffffffffffd < uVar11" number_literal < identifier) )) (compound_statement "{\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }" { (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad70f;" goto statement_identifier ;) })) }) (else_clause "else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" else (compound_statement "{\n                uVar11 = (ulong)(bVar3 != 0);\n              }" { (expression_statement "uVar11 = (ulong)(bVar3 != 0);" (assignment_expression "uVar11 = (ulong)(bVar3 != 0)" identifier = (call_expression "(ulong)(bVar3 != 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }" { (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad70f;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar11 = 1;\n            }" else (compound_statement "{\n              uVar11 = 1;\n            }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar14 = iVar14 + (int)uVar11;" (assignment_expression "iVar14 = iVar14 + (int)uVar11" identifier = (binary_expression "iVar14 + (int)uVar11" identifier + (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) }) (else_clause "else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" else (compound_statement "{\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" { (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (if_statement "if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }" if (parenthesized_expression "(1 < locale_mb_cur_max)" ( (binary_expression "1 < locale_mb_cur_max" number_literal < identifier) )) (compound_statement "{\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }" { (expression_statement "bVar3 = param_1[iVar14];" (assignment_expression "bVar3 = param_1[iVar14]" identifier = (subscript_expression "param_1[iVar14]" identifier [ identifier ])) ;) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }" if (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0)" ( (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" ( (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" * (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" ( (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" identifier + (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 >> 5)" ( (binary_expression "bVar3 >> 5" identifier >> number_literal) ))) * number_literal)) )))) >> (parenthesized_expression "(bVar3 & 0x1f)" ( (binary_expression "bVar3 & 0x1f" identifier & number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }" { (if_statement "if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" if (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar3 < '\0'))" ( (binary_expression "(locale_utf8locale == 0) || ((char)bVar3 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" ( (binary_expression "locale_utf8locale == 0" identifier == number_literal) )) || (parenthesized_expression "((char)bVar3 < '\0')" ( (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }" { (expression_statement "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier = (call_expression "mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" identifier (argument_list "((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" ( (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar13 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar13 - iVar14)" ( (binary_expression "iVar13 - iVar14" identifier - identifier) ))) , (pointer_expression "&local_68" & identifier) )))) ;) (if_statement "if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }" if (parenthesized_expression "(0xfffffffffffffffd < uVar11)" ( (binary_expression "0xfffffffffffffffd < uVar11" number_literal < identifier) )) (compound_statement "{\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }" { (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" identifier = identifier) ;) (goto_statement "goto LAB_001ad263;" goto statement_identifier ;) })) }) (else_clause "else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" else (compound_statement "{\n                uVar11 = (ulong)(bVar3 != 0);\n              }" { (expression_statement "uVar11 = (ulong)(bVar3 != 0);" (assignment_expression "uVar11 = (ulong)(bVar3 != 0)" identifier = (call_expression "(ulong)(bVar3 != 0)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(bVar3 != 0)" ( (binary_expression "bVar3 != 0" identifier != number_literal) )))) ;) }))) (if_statement "if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }" { (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" identifier = (binary_expression "iVar14 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_001ad263;" goto statement_identifier ;) })) }) (else_clause "else {\n              uVar11 = 1;\n            }" else (compound_statement "{\n              uVar11 = 1;\n            }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) }))) (expression_statement "iVar6 = iVar14 + (int)uVar11;" (assignment_expression "iVar6 = iVar14 + (int)uVar11" identifier = (binary_expression "iVar14 + (int)uVar11" identifier + (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (labeled_statement "LAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);" statement_identifier : (expression_statement "__ptr = (void *)substring(param_1,iVar14,iVar6);" (assignment_expression "__ptr = (void *)substring(param_1,iVar14,iVar6)" identifier = (cast_expression "(void *)substring(param_1,iVar14,iVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "substring(param_1,iVar14,iVar6)" identifier (argument_list "(param_1,iVar14,iVar6)" ( identifier , identifier , identifier ))))) ;)) (expression_statement "iVar7 = strmatch(param_2,__ptr,0x20);" (assignment_expression "iVar7 = strmatch(param_2,__ptr,0x20)" identifier = (call_expression "strmatch(param_2,__ptr,0x20)" identifier (argument_list "(param_2,__ptr,0x20)" ( identifier , identifier , number_literal )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (iVar7 != 1) goto LAB_001ad298;" if (parenthesized_expression "(iVar7 != 1)" ( (binary_expression "iVar7 != 1" identifier != number_literal) )) (goto_statement "goto LAB_001ad298;" goto statement_identifier ;)) (expression_statement "memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));" (call_expression "memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14))" identifier (argument_list "(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14))" ( (binary_expression "local_a0 + iVar17" identifier + identifier) , (binary_expression "param_1 + iVar14" identifier + identifier) , (cast_expression "(long)(iVar6 - iVar14)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar6 - iVar14)" ( (binary_expression "iVar6 - iVar14" identifier - identifier) ))) ))) ;) (expression_statement "iVar17 = iVar17 + (iVar6 - iVar14);" (assignment_expression "iVar17 = iVar17 + (iVar6 - iVar14)" identifier = (binary_expression "iVar17 + (iVar6 - iVar14)" identifier + (parenthesized_expression "(iVar6 - iVar14)" ( (binary_expression "iVar6 - iVar14" identifier - identifier) )))) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (expression_statement "iVar14 = iVar6;" (assignment_expression "iVar14 = iVar6" identifier = identifier) ;) }))) (labeled_statement "LAB_001ad70f:" statement_identifier : (expression_statement "" ;)) }) while (parenthesized_expression "(iVar14 < iVar13)" ( (binary_expression "iVar14 < iVar13" identifier < identifier) )) ;) }))) (expression_statement "local_a0[iVar17] = 0;" (assignment_expression "local_a0[iVar17] = 0" (subscript_expression "local_a0[iVar17]" identifier [ identifier ]) = number_literal) ;) }))) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\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 local_a0;\n  }" { (return_statement "return local_a0;" return identifier ;) })) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (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) ;) (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 IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ]))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (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 != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT) )))) )) (compound_statement { (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 = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT) )) - IDENT) )))) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) })) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT)) + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (char_literal L' escape_sequence ')) ))) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT + IDENT) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) , (pointer_expression & IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ IDENT ])))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal L' escape_sequence ')) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }))) })))))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (char_literal L' character ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT)) + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + (char_literal L' escape_sequence ')) ))) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * IDENT) )) [ IDENT ])) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (binary_expression IDENT + IDENT) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) )))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) , (binary_expression IDENT + IDENT) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , (binary_expression IDENT + IDENT) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (labeled_statement statement_identifier : (expression_statement ;)) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined1 * sh_modcase(char *param_1,long param_2,uint param_3)\n\n{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    \n  __stack_chk_fail();\n}" (type_identifier "undefined1") (pointer_declarator "* sh_modcase(char *param_1,long param_2,uint param_3)" (* "*") (function_declarator "sh_modcase(char *param_1,long param_2,uint param_3)" (identifier "sh_modcase") (parameter_list "(char *param_1,long param_2,uint param_3)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) () ")")))) (compound_statement "{\n  char cVar1;\n  mbstate_t mVar2;\n  byte bVar3;\n  int iVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  size_t sVar8;\n  void *__ptr;\n  ushort **ppuVar9;\n  __int32_t **pp_Var10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  int iVar14;\n  wchar_t wVar15;\n  char *pcVar16;\n  int iVar17;\n  uint uVar18;\n  byte *__s;\n  int iVar19;\n  long in_FS_OFFSET;\n  byte bVar20;\n  undefined1 *local_a0;\n  wchar_t local_70;\n  wchar_t local_6c;\n  mbstate_t local_68;\n  mbstate_t local_60;\n  char local_58 [24];\n  long local_40;\n  \n  bVar20 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "mbstate_t mVar2;" (type_identifier "mbstate_t") (identifier "mVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "size_t sVar8;" (primitive_type "size_t") (identifier "sVar8") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "ushort **ppuVar9;" (type_identifier "ushort") (pointer_declarator "**ppuVar9" (* "*") (pointer_declarator "*ppuVar9" (* "*") (identifier "ppuVar9"))) (; ";")) (declaration "__int32_t **pp_Var10;" (type_identifier "__int32_t") (pointer_declarator "**pp_Var10" (* "*") (pointer_declarator "*pp_Var10" (* "*") (identifier "pp_Var10"))) (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "wchar_t wVar15;" (type_identifier "wchar_t") (identifier "wVar15") (; ";")) (declaration "char *pcVar16;" (primitive_type "char") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "byte *__s;" (type_identifier "byte") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "byte bVar20;" (type_identifier "byte") (identifier "bVar20") (; ";")) (declaration "undefined1 *local_a0;" (type_identifier "undefined1") (pointer_declarator "*local_a0" (* "*") (identifier "local_a0")) (; ";")) (declaration "wchar_t local_70;" (type_identifier "wchar_t") (identifier "local_70") (; ";")) (declaration "wchar_t local_6c;" (type_identifier "wchar_t") (identifier "local_6c") (; ";")) (declaration "mbstate_t local_68;" (type_identifier "mbstate_t") (identifier "local_68") (; ";")) (declaration "mbstate_t local_60;" (type_identifier "mbstate_t") (identifier "local_60") (; ";")) (declaration "char local_58 [24];" (primitive_type "char") (array_declarator "local_58 [24]" (identifier "local_58") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar20 = 0;" (assignment_expression "bVar20 = 0" (identifier "bVar20") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }\n  else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" (if "if") (parenthesized_expression "((param_1 == (char *)0x0) || (*param_1 == '\0'))" (( "(") (binary_expression "(param_1 == (char *)0x0) || (*param_1 == '\0')" (parenthesized_expression "(param_1 == (char *)0x0)" (( "(") (binary_expression "param_1 == (char *)0x0" (identifier "param_1") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*param_1 == '\0')" (( "(") (binary_expression "*param_1 == '\0'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    local_a0 = (undefined1 *)xmalloc(1);\n    *local_a0 = 0;\n  }" ({ "{") (expression_statement "local_a0 = (undefined1 *)xmalloc(1);" (assignment_expression "local_a0 = (undefined1 *)xmalloc(1)" (identifier "local_a0") (= "=") (cast_expression "(undefined1 *)xmalloc(1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(1)" (identifier "xmalloc") (argument_list "(1)" (( "(") (number_literal "1") () ")"))))) (; ";")) (expression_statement "*local_a0 = 0;" (assignment_expression "*local_a0 = 0" (pointer_expression "*local_a0" (* "*") (identifier "local_a0")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" (else "else") (compound_statement "{\n    local_68.__count = 0;\n    local_68.__value = (_union_27)0x0;\n    lVar12 = -1;\n    pcVar16 = param_1;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');\n    iVar13 = ~(uint)lVar12 - 1;\n    sVar8 = __ctype_get_mb_cur_max();\n    iVar4 = (int)sVar8;\n    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));\n    uVar5 = param_3 & 0x1000;\n    param_3 = param_3 & 0xffffefff;\n    if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }\n    local_a0[iVar17] = 0;\n  }" ({ "{") (expression_statement "local_68.__count = 0;" (assignment_expression "local_68.__count = 0" (field_expression "local_68.__count" (identifier "local_68") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_68.__value = (_union_27)0x0;" (assignment_expression "local_68.__value = (_union_27)0x0" (field_expression "local_68.__value" (identifier "local_68") (. ".") (field_identifier "__value")) (= "=") (cast_expression "(_union_27)0x0" (( "(") (type_descriptor "_union_27" (type_identifier "_union_27")) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" (identifier "lVar12") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pcVar16 = param_1;" (assignment_expression "pcVar16 = param_1" (identifier "pcVar16") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar16;\n      pcVar16 = pcVar16 + 1;\n    }" ({ "{") (if_statement "if (lVar12 == 0) break;" (if "if") (parenthesized_expression "(lVar12 == 0)" (( "(") (binary_expression "lVar12 == 0" (identifier "lVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" (identifier "lVar12") (= "=") (binary_expression "lVar12 + -1" (identifier "lVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar1 = *pcVar16;" (assignment_expression "cVar1 = *pcVar16" (identifier "cVar1") (= "=") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16"))) (; ";")) (expression_statement "pcVar16 = pcVar16 + 1;" (assignment_expression "pcVar16 = pcVar16 + 1" (identifier "pcVar16") (= "=") (binary_expression "pcVar16 + 1" (identifier "pcVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "iVar13 = ~(uint)lVar12 - 1;" (assignment_expression "iVar13 = ~(uint)lVar12 - 1" (identifier "iVar13") (= "=") (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" (~ "~") (cast_expression "(uint)lVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar12"))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" (identifier "sVar8") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = (int)sVar8;" (assignment_expression "iVar4 = (int)sVar8" (identifier "iVar4") (= "=") (cast_expression "(int)sVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar8"))) (; ";")) (expression_statement "local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));" (assignment_expression "local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1))" (identifier "local_a0") (= "=") (cast_expression "(undefined1 *)xmalloc((long)(iVar13 * 2 + 1))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc((long)(iVar13 * 2 + 1))" (identifier "xmalloc") (argument_list "((long)(iVar13 * 2 + 1))" (( "(") (cast_expression "(long)(iVar13 * 2 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar13 * 2 + 1)" (( "(") (binary_expression "iVar13 * 2 + 1" (binary_expression "iVar13 * 2" (identifier "iVar13") (* "*") (number_literal "2")) (+ "+") (number_literal "1")) () ")"))) () ")"))))) (; ";")) (expression_statement "uVar5 = param_3 & 0x1000;" (assignment_expression "uVar5 = param_3 & 0x1000" (identifier "uVar5") (= "=") (binary_expression "param_3 & 0x1000" (identifier "param_3") (& "&") (number_literal "0x1000"))) (; ";")) (expression_statement "param_3 = param_3 & 0xffffefff;" (assignment_expression "param_3 = param_3 & 0xffffefff" (identifier "param_3") (= "=") (binary_expression "param_3 & 0xffffefff" (identifier "param_3") (& "&") (number_literal "0xffffefff"))) (; ";")) (if_statement "if (iVar13 < 1) {\n      iVar17 = 0;\n    }\n    else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" (if "if") (parenthesized_expression "(iVar13 < 1)" (( "(") (binary_expression "iVar13 < 1" (identifier "iVar13") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      iVar17 = 0;\n    }" ({ "{") (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" (else "else") (compound_statement "{\n      iVar19 = 0;\n      iVar17 = 0;\n      iVar14 = 0;\n      do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);\n    }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar17 = 0;" (assignment_expression "iVar17 = 0" (identifier "iVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      } while (iVar14 < iVar13);" (do "do") (compound_statement "{\n        sVar8 = __ctype_get_mb_cur_max();\n        if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }\n        local_70 = wVar15;\n        iVar6 = iswalnum(wVar15);\n        mVar2 = local_68;\n        if (iVar6 == 0) {\n          iVar19 = 0;\n        }\n        if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }\nLAB_001ad70f:\n      }" ({ "{") (expression_statement "sVar8 = __ctype_get_mb_cur_max();" (assignment_expression "sVar8 = __ctype_get_mb_cur_max()" (identifier "sVar8") (= "=") (call_expression "__ctype_get_mb_cur_max()" (identifier "__ctype_get_mb_cur_max") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (sVar8 == 1) {\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }\n        else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(sVar8 == 1)" (( "(") (binary_expression "sVar8 == 1" (identifier "sVar8") (== "==") (number_literal "1")) () ")")) (compound_statement "{\nLAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];\n        }" ({ "{") (labeled_statement "LAB_001ad1c0:\n          wVar15 = (wchar_t)param_1[iVar14];" (statement_identifier "LAB_001ad1c0") (: ":") (expression_statement "wVar15 = (wchar_t)param_1[iVar14];" (assignment_expression "wVar15 = (wchar_t)param_1[iVar14]" (identifier "wVar15") (= "=") (cast_expression "(wchar_t)param_1[iVar14]" (( "(") (type_descriptor "wchar_t" (type_identifier "wchar_t")) () ")") (subscript_expression "param_1[iVar14]" (identifier "param_1") ([ "[") (identifier "iVar14") (] "]")))) (; ";"))) (} "}")) (else_clause "else {\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          __s = (byte *)(param_1 + iVar14);\n          bVar3 = *__s;\n          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;\n          lVar12 = -1;\n          pcVar16 = param_1;\n          do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');\n          wVar15 = (int)(char)bVar3;\n          if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }\n        }" ({ "{") (expression_statement "__s = (byte *)(param_1 + iVar14);" (assignment_expression "__s = (byte *)(param_1 + iVar14)" (identifier "__s") (= "=") (cast_expression "(byte *)(param_1 + iVar14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar14)" (( "(") (binary_expression "param_1 + iVar14" (identifier "param_1") (+ "+") (identifier "iVar14")) () ")")))) (; ";")) (expression_statement "bVar3 = *__s;" (assignment_expression "bVar3 = *__s" (identifier "bVar3") (= "=") (pointer_expression "*__s" (* "*") (identifier "__s"))) (; ";")) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)\n          goto LAB_001ad1c0;" (if "if") (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (* "*") (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" (identifier "is_basic_table") (+ "+") (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar3 >> 5)" (( "(") (binary_expression "bVar3 >> 5" (identifier "bVar3") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar3 & 0x1f)" (( "(") (binary_expression "bVar3 & 0x1f" (identifier "bVar3") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ad1c0;" (goto "goto") (statement_identifier "LAB_001ad1c0") (; ";"))) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" (identifier "lVar12") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pcVar16 = param_1;" (assignment_expression "pcVar16 = param_1" (identifier "pcVar16") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          } while (cVar1 != '\0');" (do "do") (compound_statement "{\n            if (lVar12 == 0) break;\n            lVar12 = lVar12 + -1;\n            cVar1 = *pcVar16;\n            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar12 == 0) break;" (if "if") (parenthesized_expression "(lVar12 == 0)" (( "(") (binary_expression "lVar12 == 0" (identifier "lVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" (identifier "lVar12") (= "=") (binary_expression "lVar12 + -1" (identifier "lVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar1 = *pcVar16;" (assignment_expression "cVar1 = *pcVar16" (identifier "cVar1") (= "=") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16"))) (; ";")) (expression_statement "pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;" (assignment_expression "pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1" (identifier "pcVar16") (= "=") (binary_expression "pcVar16 + (ulong)bVar20 * -2 + 1" (binary_expression "pcVar16 + (ulong)bVar20 * -2" (identifier "pcVar16") (+ "+") (binary_expression "(ulong)bVar20 * -2" (cast_expression "(ulong)bVar20" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar20")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "wVar15 = (int)(char)bVar3;" (assignment_expression "wVar15 = (int)(char)bVar3" (identifier "wVar15") (= "=") (cast_expression "(int)(char)bVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar3")))) (; ";")) (if_statement "if (iVar14 < (int)(~(uint)lVar12 - 2)) {\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" (if "if") (parenthesized_expression "(iVar14 < (int)(~(uint)lVar12 - 2))" (( "(") (binary_expression "iVar14 < (int)(~(uint)lVar12 - 2)" (identifier "iVar14") (< "<") (cast_expression "(int)(~(uint)lVar12 - 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(~(uint)lVar12 - 2)" (( "(") (binary_expression "~(uint)lVar12 - 2" (unary_expression "~(uint)lVar12" (~ "~") (cast_expression "(uint)lVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar12"))) (- "-") (number_literal "2")) () ")")))) () ")")) (compound_statement "{\n            local_60.__count = 0;\n            local_60.__value = (_union_27)0x0;\n            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);\n            wVar15 = local_6c;\n            if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }\n          }" ({ "{") (expression_statement "local_60.__count = 0;" (assignment_expression "local_60.__count = 0" (field_expression "local_60.__count" (identifier "local_60") (. ".") (field_identifier "__count")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_60.__value = (_union_27)0x0;" (assignment_expression "local_60.__value = (_union_27)0x0" (field_expression "local_60.__value" (identifier "local_60") (. ".") (field_identifier "__value")) (= "=") (cast_expression "(_union_27)0x0" (( "(") (type_descriptor "_union_27" (type_identifier "_union_27")) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60);" (assignment_expression "sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" (identifier "sVar8") (= "=") (call_expression "mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" (identifier "mbrtowc") (argument_list "(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),\n                            &local_60)" (( "(") (pointer_expression "&local_6c" (& "&") (identifier "local_6c")) (, ",") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (cast_expression "(long)(int)((~(uint)lVar12 - 1) - iVar14)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)((~(uint)lVar12 - 1) - iVar14)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((~(uint)lVar12 - 1) - iVar14)" (( "(") (binary_expression "(~(uint)lVar12 - 1) - iVar14" (parenthesized_expression "(~(uint)lVar12 - 1)" (( "(") (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" (~ "~") (cast_expression "(uint)lVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar12"))) (- "-") (number_literal "1")) () ")")) (- "-") (identifier "iVar14")) () ")")))) (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")")))) (; ";")) (expression_statement "wVar15 = local_6c;" (assignment_expression "wVar15 = local_6c" (identifier "wVar15") (= "=") (identifier "local_6c")) (; ";")) (if_statement "if (0xfffffffffffffffc < sVar8 - 1) {\n              wVar15 = (wchar_t)(char)*__s;\n            }" (if "if") (parenthesized_expression "(0xfffffffffffffffc < sVar8 - 1)" (( "(") (binary_expression "0xfffffffffffffffc < sVar8 - 1" (number_literal "0xfffffffffffffffc") (< "<") (binary_expression "sVar8 - 1" (identifier "sVar8") (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n              wVar15 = (wchar_t)(char)*__s;\n            }" ({ "{") (expression_statement "wVar15 = (wchar_t)(char)*__s;" (assignment_expression "wVar15 = (wchar_t)(char)*__s" (identifier "wVar15") (= "=") (binary_expression "(wchar_t)(char)*__s" (call_expression "(wchar_t)(char)" (parenthesized_expression "(wchar_t)" (( "(") (identifier "wchar_t") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (* "*") (identifier "__s"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "local_70 = wVar15;" (assignment_expression "local_70 = wVar15" (identifier "local_70") (= "=") (identifier "wVar15")) (; ";")) (expression_statement "iVar6 = iswalnum(wVar15);" (assignment_expression "iVar6 = iswalnum(wVar15)" (identifier "iVar6") (= "=") (call_expression "iswalnum(wVar15)" (identifier "iswalnum") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (expression_statement "mVar2 = local_68;" (assignment_expression "mVar2 = local_68" (identifier "mVar2") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (iVar6 == 0) {\n          iVar19 = 0;\n        }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar19 = 0;\n        }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (} "}"))) (if_statement "if (param_2 == 0) {\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }\n        else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }\n          mVar2 = local_68;\n          if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }\n        }" ({ "{") (labeled_statement "LAB_001ad298:\n          if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" (statement_identifier "LAB_001ad298") (: ":") (if_statement "if (param_3 == 4) {\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }\n          else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" (if "if") (parenthesized_expression "(param_3 == 4)" (( "(") (binary_expression "param_3 == 4" (identifier "param_3") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n            if (uVar5 == 0) goto joined_r0x001ad3be;\njoined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;\nLAB_001ad3c4:\n            iVar19 = iVar4;\n            if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }\n            uVar18 = 1;\n            iVar19 = 1;\nLAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n            if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }\n            if (sVar8 == 0) {\n              local_70 = L'\0';\n            }\n            wVar15 = local_70;\n            if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }\n          }" ({ "{") (if_statement "if (uVar5 == 0) goto joined_r0x001ad3be;" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x001ad3be;" (goto "goto") (statement_identifier "joined_r0x001ad3be") (; ";"))) (labeled_statement "joined_r0x001ad328:\n            if (iVar19 == 0) goto LAB_001ad32e;" (statement_identifier "joined_r0x001ad328") (: ":") (if_statement "if (iVar19 == 0) goto LAB_001ad32e;" (if "if") (parenthesized_expression "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ad32e;" (goto "goto") (statement_identifier "LAB_001ad32e") (; ";")))) (labeled_statement "LAB_001ad3c4:\n            iVar19 = iVar4;" (statement_identifier "LAB_001ad3c4") (: ":") (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" (identifier "iVar19") (= "=") (identifier "iVar4")) (; ";"))) (if_statement "if (iVar4 == 1) {\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" (if "if") (parenthesized_expression "(iVar4 == 1)" (( "(") (binary_expression "iVar4 == 1" (identifier "iVar4") (== "==") (number_literal "1")) () ")")) (compound_statement "{\nLAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();\n              wVar15 = local_70;\n              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }\n              goto LAB_001ad4ce;\n            }" ({ "{") (labeled_statement "LAB_001ad3d4:\n              ppuVar9 = __ctype_b_loc();" (statement_identifier "LAB_001ad3d4") (: ":") (expression_statement "ppuVar9 = __ctype_b_loc();" (assignment_expression "ppuVar9 = __ctype_b_loc()" (identifier "ppuVar9") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" (identifier "wVar15") (= "=") (identifier "local_70")) (; ";")) (if_statement "if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)) {\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }" (if "if") (parenthesized_expression "(((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180))" (( "(") (binary_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&\n                 ((uint)(local_70 + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1)" (( "(") (binary_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1" (pointer_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2" (cast_expression "(long)*ppuVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar9" (* "*") (identifier "ppuVar9"))) (+ "+") (binary_expression "(ulong)(uint)(local_70 & 0xff) * 2" (call_expression "(ulong)(uint)(local_70 & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(local_70 & 0xff)" (( "(") (binary_expression "local_70 & 0xff" (identifier "local_70") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uint)(local_70 + L'\x80') < 0x180)" (( "(") (binary_expression "(uint)(local_70 + L'\x80') < 0x180" (call_expression "(uint)(local_70 + L'\x80')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_70 + L'\x80')" (( "(") (binary_expression "local_70 + L'\x80'" (identifier "local_70") (+ "+") (char_literal "L'\x80'" (L' "L'") (escape_sequence "\x80") (' "'"))) () ")"))) (< "<") (number_literal "0x180")) () ")"))) () ")")) (compound_statement "{\n                pp_Var10 = __ctype_tolower_loc();\n                wVar15 = (*pp_Var10)[wVar15];\n              }" ({ "{") (expression_statement "pp_Var10 = __ctype_tolower_loc();" (assignment_expression "pp_Var10 = __ctype_tolower_loc()" (identifier "pp_Var10") (= "=") (call_expression "__ctype_tolower_loc()" (identifier "__ctype_tolower_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "wVar15 = (*pp_Var10)[wVar15];" (assignment_expression "wVar15 = (*pp_Var10)[wVar15]" (identifier "wVar15") (= "=") (subscript_expression "(*pp_Var10)[wVar15]" (parenthesized_expression "(*pp_Var10)" (( "(") (pointer_expression "*pp_Var10" (* "*") (identifier "pp_Var10")) () ")")) ([ "[") (identifier "wVar15") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_001ad4ce;" (goto "goto") (statement_identifier "LAB_001ad4ce") (; ";")) (} "}"))) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" (identifier "uVar18") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_001ad345:\n            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (statement_identifier "LAB_001ad345") (: ":") (expression_statement "sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (identifier "sVar8") (= "=") (call_expression "mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (identifier "mbrtowc") (argument_list "(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (( "(") (pointer_expression "&local_70" (& "&") (identifier "local_70")) (, ",") (binary_expression "param_1 + iVar14" (identifier "param_1") (+ "+") (identifier "iVar14")) (, ",") (cast_expression "(long)(iVar13 - iVar14)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar13 - iVar14)" (( "(") (binary_expression "iVar13 - iVar14" (identifier "iVar13") (- "-") (identifier "iVar14")) () ")"))) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";"))) (if_statement "if (0xfffffffffffffffd < sVar8) {\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" (if "if") (parenthesized_expression "(0xfffffffffffffffd < sVar8)" (( "(") (binary_expression "0xfffffffffffffffd < sVar8" (number_literal "0xfffffffffffffffd") (< "<") (identifier "sVar8")) () ")")) (compound_statement "{\n              local_70 = (wchar_t)(byte)param_1[iVar14];\nLAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;\n              wVar15 = local_70;\n              if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;\n              goto LAB_001ad4ce;\n            }" ({ "{") (expression_statement "local_70 = (wchar_t)(byte)param_1[iVar14];" (assignment_expression "local_70 = (wchar_t)(byte)param_1[iVar14]" (identifier "local_70") (= "=") (cast_expression "(wchar_t)(byte)param_1[iVar14]" (( "(") (type_descriptor "wchar_t" (type_identifier "wchar_t")) () ")") (cast_expression "(byte)param_1[iVar14]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "param_1[iVar14]" (identifier "param_1") ([ "[") (identifier "iVar14") (] "]"))))) (; ";")) (labeled_statement "LAB_001ad5ac:\n              if (uVar18 == 2) goto LAB_001ad542;" (statement_identifier "LAB_001ad5ac") (: ":") (if_statement "if (uVar18 == 2) goto LAB_001ad542;" (if "if") (parenthesized_expression "(uVar18 == 2)" (( "(") (binary_expression "uVar18 == 2" (identifier "uVar18") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_001ad542;" (goto "goto") (statement_identifier "LAB_001ad542") (; ";")))) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" (identifier "wVar15") (= "=") (identifier "local_70")) (; ";")) (if_statement "if ((int)uVar18 < 3) {\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }\n              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" (if "if") (parenthesized_expression "((int)uVar18 < 3)" (( "(") (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n                if (uVar18 == 1) goto LAB_001ad3d4;\n              }" ({ "{") (if_statement "if (uVar18 == 1) goto LAB_001ad3d4;" (if "if") (parenthesized_expression "(uVar18 == 1)" (( "(") (binary_expression "uVar18 == 1" (identifier "uVar18") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_001ad3d4;" (goto "goto") (statement_identifier "LAB_001ad3d4") (; ";"))) (} "}")) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" (else "else") (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;" (if "if") (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" (( "(") (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" (( "(") (binary_expression "uVar18 == 0x10" (identifier "uVar18") (== "==") (number_literal "0x10")) () ")")) (|| "||") (parenthesized_expression "(uVar18 == 0x20)" (( "(") (binary_expression "uVar18 == 0x20" (identifier "uVar18") (== "==") (number_literal "0x20")) () ")"))) () ")")) (goto_statement "goto LAB_001ad5c8;" (goto "goto") (statement_identifier "LAB_001ad5c8") (; ";"))))) (goto_statement "goto LAB_001ad4ce;" (goto "goto") (statement_identifier "LAB_001ad4ce") (; ";")) (} "}"))) (if_statement "if (sVar8 == 0) {\n              local_70 = L'\0';\n            }" (if "if") (parenthesized_expression "(sVar8 == 0)" (( "(") (binary_expression "sVar8 == 0" (identifier "sVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              local_70 = L'\0';\n            }" ({ "{") (expression_statement "local_70 = L'\0';" (assignment_expression "local_70 = L'\0'" (identifier "local_70") (= "=") (char_literal "L'\0'" (L' "L'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}"))) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" (identifier "wVar15") (= "=") (identifier "local_70")) (; ";")) (if_statement "if (uVar18 == 2) {\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }\n            else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" (if "if") (parenthesized_expression "(uVar18 == 2)" (( "(") (binary_expression "uVar18 == 2" (identifier "uVar18") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n              iVar6 = iswlower(local_70);\n              if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }\n            }" ({ "{") (expression_statement "iVar6 = iswlower(local_70);" (assignment_expression "iVar6 = iswlower(local_70)" (identifier "iVar6") (= "=") (call_expression "iswlower(local_70)" (identifier "iswlower") (argument_list "(local_70)" (( "(") (identifier "local_70") () ")")))) (; ";")) (if_statement "if (iVar6 != 0) {\n                wVar15 = towupper(wVar15);\n              }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                wVar15 = towupper(wVar15);\n              }" ({ "{") (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" (identifier "wVar15") (= "=") (call_expression "towupper(wVar15)" (identifier "towupper") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" (else "else") (if_statement "if ((int)uVar18 < 3) {\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }\n            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" (if "if") (parenthesized_expression "((int)uVar18 < 3)" (( "(") (binary_expression "(int)uVar18 < 3" (cast_expression "(int)uVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar18")) (< "<") (number_literal "3")) () ")")) (compound_statement "{\n              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }\n            }" ({ "{") (if_statement "if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {\n                wVar15 = towlower(wVar15);\n              }" (if "if") (parenthesized_expression "((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0))" (( "(") (binary_expression "(uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)" (parenthesized_expression "(uVar18 == 1)" (( "(") (binary_expression "uVar18 == 1" (identifier "uVar18") (== "==") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(iVar6 = iswupper(local_70), iVar6 != 0)" (( "(") (comma_expression "iVar6 = iswupper(local_70), iVar6 != 0" (assignment_expression "iVar6 = iswupper(local_70)" (identifier "iVar6") (= "=") (call_expression "iswupper(local_70)" (identifier "iswupper") (argument_list "(local_70)" (( "(") (identifier "local_70") () ")")))) (, ",") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" ({ "{") (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" (identifier "wVar15") (= "=") (call_expression "towlower(wVar15)" (identifier "towlower") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" (else "else") (if_statement "if ((uVar18 == 0x10) || (uVar18 == 0x20)) {\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" (if "if") (parenthesized_expression "((uVar18 == 0x10) || (uVar18 == 0x20))" (( "(") (binary_expression "(uVar18 == 0x10) || (uVar18 == 0x20)" (parenthesized_expression "(uVar18 == 0x10)" (( "(") (binary_expression "uVar18 == 0x10" (identifier "uVar18") (== "==") (number_literal "0x10")) () ")")) (|| "||") (parenthesized_expression "(uVar18 == 0x20)" (( "(") (binary_expression "uVar18 == 0x20" (identifier "uVar18") (== "==") (number_literal "0x20")) () ")"))) () ")")) (compound_statement "{\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n            }" ({ "{") (expression_statement "iVar6 = iswupper(local_70);" (assignment_expression "iVar6 = iswupper(local_70)" (identifier "iVar6") (= "=") (call_expression "iswupper(local_70)" (identifier "iswupper") (argument_list "(local_70)" (( "(") (identifier "local_70") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" ({ "{") (expression_statement "iVar6 = iswlower(wVar15);" (assignment_expression "iVar6 = iswlower(wVar15)" (identifier "iVar6") (= "=") (call_expression "iswlower(wVar15)" (identifier "iswlower") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (if_statement "if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" ({ "{") (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" (identifier "wVar15") (= "=") (call_expression "towupper(wVar15)" (identifier "towupper") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" (else "else") (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" ({ "{") (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" (identifier "wVar15") (= "=") (call_expression "towlower(wVar15)" (identifier "towlower") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (} "}")))) (} "}"))))))) (if_statement "if ((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }\n            else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" (if "if") (parenthesized_expression "((wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0))" (( "(") (binary_expression "(wVar15 < L'Ā') &&\n               (bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" (parenthesized_expression "(wVar15 < L'Ā')" (( "(") (binary_expression "wVar15 < L'Ā'" (identifier "wVar15") (< "<") (char_literal "L'Ā'" (L' "L'") (character "Ā") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)" (( "(") (comma_expression "bVar3 = (byte)wVar15,\n               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (assignment_expression "bVar3 = (byte)wVar15" (identifier "bVar3") (= "=") (cast_expression "(byte)wVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "wVar15"))) (, ",") (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (* "*") (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" (identifier "is_basic_table") (+ "+") (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar3 >> 5)" (( "(") (binary_expression "bVar3 >> 5" (identifier "bVar3") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar3 & 0x1f)" (( "(") (binary_expression "bVar3 & 0x1f" (identifier "bVar3") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n              local_a0[iVar17] = bVar3;\n              iVar17 = iVar17 + 1;\n            }" ({ "{") (expression_statement "local_a0[iVar17] = bVar3;" (assignment_expression "local_a0[iVar17] = bVar3" (subscript_expression "local_a0[iVar17]" (identifier "local_a0") ([ "[") (identifier "iVar17") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" (identifier "iVar17") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" (else "else") (compound_statement "{\n              sVar8 = wcrtomb(local_58,wVar15,&local_68);\n              iVar6 = (int)sVar8;\n              if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }\n              strncpy(local_a0 + iVar17,local_58,(long)iVar6);\n              iVar17 = iVar17 + iVar6;\n            }" ({ "{") (expression_statement "sVar8 = wcrtomb(local_58,wVar15,&local_68);" (assignment_expression "sVar8 = wcrtomb(local_58,wVar15,&local_68)" (identifier "sVar8") (= "=") (call_expression "wcrtomb(local_58,wVar15,&local_68)" (identifier "wcrtomb") (argument_list "(local_58,wVar15,&local_68)" (( "(") (identifier "local_58") (, ",") (identifier "wVar15") (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (expression_statement "iVar6 = (int)sVar8;" (assignment_expression "iVar6 = (int)sVar8" (identifier "iVar6") (= "=") (cast_expression "(int)sVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar8"))) (; ";")) (if_statement "if (0 < iVar6) {\n                local_58[iVar6] = '\0';\n              }" (if "if") (parenthesized_expression "(0 < iVar6)" (( "(") (binary_expression "0 < iVar6" (number_literal "0") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n                local_58[iVar6] = '\0';\n              }" ({ "{") (expression_statement "local_58[iVar6] = '\0';" (assignment_expression "local_58[iVar6] = '\0'" (subscript_expression "local_58[iVar6]" (identifier "local_58") ([ "[") (identifier "iVar6") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}"))) (expression_statement "strncpy(local_a0 + iVar17,local_58,(long)iVar6);" (call_expression "strncpy(local_a0 + iVar17,local_58,(long)iVar6)" (identifier "strncpy") (argument_list "(local_a0 + iVar17,local_58,(long)iVar6)" (( "(") (binary_expression "local_a0 + iVar17" (identifier "local_a0") (+ "+") (identifier "iVar17")) (, ",") (identifier "local_58") (, ",") (cast_expression "(long)iVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar6")) () ")"))) (; ";")) (expression_statement "iVar17 = iVar17 + iVar6;" (assignment_expression "iVar17 = iVar17 + iVar6" (identifier "iVar17") (= "=") (binary_expression "iVar17 + iVar6" (identifier "iVar17") (+ "+") (identifier "iVar6"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" (else "else") (compound_statement "{\n            if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }\n            if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }\n            if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }\n            if (iVar19 != 0) goto LAB_001ad44b;\nLAB_001ad32e:\n            iVar19 = iVar4;\n            if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }\nLAB_001ad542:\n            ppuVar9 = __ctype_b_loc();\n            wVar15 = local_70;\n            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }\nLAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;\n            iVar17 = iVar17 + 1;\n          }" ({ "{") (if_statement "if (param_3 == 8) {\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" (if "if") (parenthesized_expression "(param_3 == 8)" (( "(") (binary_expression "param_3 == 8" (identifier "param_3") (== "==") (number_literal "8")) () ")")) (compound_statement "{\n              if (uVar5 != 0) goto joined_r0x001ad328;\njoined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;\n              goto LAB_001ad3c4;\n            }" ({ "{") (if_statement "if (uVar5 != 0) goto joined_r0x001ad328;" (if "if") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x001ad328;" (goto "goto") (statement_identifier "joined_r0x001ad328") (; ";"))) (labeled_statement "joined_r0x001ad3be:\n              if (iVar14 < 1) goto LAB_001ad32e;" (statement_identifier "joined_r0x001ad3be") (: ":") (if_statement "if (iVar14 < 1) goto LAB_001ad32e;" (if "if") (parenthesized_expression "(iVar14 < 1)" (( "(") (binary_expression "iVar14 < 1" (identifier "iVar14") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_001ad32e;" (goto "goto") (statement_identifier "LAB_001ad32e") (; ";")))) (goto_statement "goto LAB_001ad3c4;" (goto "goto") (statement_identifier "LAB_001ad3c4") (; ";")) (} "}"))) (if_statement "if (param_3 != 0x40) {\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" (if "if") (parenthesized_expression "(param_3 != 0x40)" (( "(") (binary_expression "param_3 != 0x40" (identifier "param_3") (!= "!=") (number_literal "0x40")) () ")")) (compound_statement "{\n              if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }\n              uVar18 = param_3;\n              if (param_3 != 0x10) goto LAB_001ad2d3;\n              if (iVar19 != 0) goto LAB_001ad44b;\n              iVar19 = iVar4;\n              if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\nLAB_001ad5c8:\n              wVar15 = local_70;\n              iVar6 = iswupper(local_70);\n              if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }\n              goto LAB_001ad4ce;\n            }" ({ "{") (if_statement "if (param_3 == 0x80) {\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" (if "if") (parenthesized_expression "(param_3 == 0x80)" (( "(") (binary_expression "param_3 == 0x80" (identifier "param_3") (== "==") (number_literal "0x80")) () ")")) (compound_statement "{\n                if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }\nLAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;\n                goto LAB_001ad5ac;\n              }" ({ "{") (if_statement "if (uVar5 == 0) {\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }\n                else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  uVar18 = (uint)(iVar14 < 1);\n                  iVar19 = 1;\n                }" ({ "{") (expression_statement "uVar18 = (uint)(iVar14 < 1);" (assignment_expression "uVar18 = (uint)(iVar14 < 1)" (identifier "uVar18") (= "=") (call_expression "(uint)(iVar14 < 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar14 < 1)" (( "(") (binary_expression "iVar14 < 1" (identifier "iVar14") (< "<") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" (else "else") (compound_statement "{\n                  uVar18 = (uint)(iVar19 == 0);\n                  iVar19 = 1;\n                }" ({ "{") (expression_statement "uVar18 = (uint)(iVar19 == 0);" (assignment_expression "uVar18 = (uint)(iVar19 == 0)" (identifier "uVar18") (= "=") (call_expression "(uint)(iVar19 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar19 == 0)" (( "(") (binary_expression "iVar19 == 0" (identifier "iVar19") (== "==") (number_literal "0")) () ")")))) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (} "}")))) (labeled_statement "LAB_001ad2d3:\n                if (iVar4 != 1) goto LAB_001ad345;" (statement_identifier "LAB_001ad2d3") (: ":") (if_statement "if (iVar4 != 1) goto LAB_001ad345;" (if "if") (parenthesized_expression "(iVar4 != 1)" (( "(") (binary_expression "iVar4 != 1" (identifier "iVar4") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_001ad345;" (goto "goto") (statement_identifier "LAB_001ad345") (; ";")))) (goto_statement "goto LAB_001ad5ac;" (goto "goto") (statement_identifier "LAB_001ad5ac") (; ";")) (} "}"))) (expression_statement "uVar18 = param_3;" (assignment_expression "uVar18 = param_3" (identifier "uVar18") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_3 != 0x10) goto LAB_001ad2d3;" (if "if") (parenthesized_expression "(param_3 != 0x10)" (( "(") (binary_expression "param_3 != 0x10" (identifier "param_3") (!= "!=") (number_literal "0x10")) () ")")) (goto_statement "goto LAB_001ad2d3;" (goto "goto") (statement_identifier "LAB_001ad2d3") (; ";"))) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ad44b;" (goto "goto") (statement_identifier "LAB_001ad44b") (; ";"))) (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" (identifier "iVar19") (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (iVar4 != 1) {\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" (if "if") (parenthesized_expression "(iVar4 != 1)" (( "(") (binary_expression "iVar4 != 1" (identifier "iVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" ({ "{") (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_001ad345;" (goto "goto") (statement_identifier "LAB_001ad345") (; ";")) (} "}"))) (labeled_statement "LAB_001ad5c8:\n              wVar15 = local_70;" (statement_identifier "LAB_001ad5c8") (: ":") (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" (identifier "wVar15") (= "=") (identifier "local_70")) (; ";"))) (expression_statement "iVar6 = iswupper(local_70);" (assignment_expression "iVar6 = iswupper(local_70)" (identifier "iVar6") (= "=") (call_expression "iswupper(local_70)" (identifier "iswupper") (argument_list "(local_70)" (( "(") (identifier "local_70") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }\n              else {\n                wVar15 = towlower(wVar15);\n              }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar6 = iswlower(wVar15);\n                if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }\n              }" ({ "{") (expression_statement "iVar6 = iswlower(wVar15);" (assignment_expression "iVar6 = iswlower(wVar15)" (identifier "iVar6") (= "=") (call_expression "iswlower(wVar15)" (identifier "iswlower") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (if_statement "if (iVar6 != 0) {\n                  wVar15 = towupper(wVar15);\n                }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  wVar15 = towupper(wVar15);\n                }" ({ "{") (expression_statement "wVar15 = towupper(wVar15);" (assignment_expression "wVar15 = towupper(wVar15)" (identifier "wVar15") (= "=") (call_expression "towupper(wVar15)" (identifier "towupper") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                wVar15 = towlower(wVar15);\n              }" (else "else") (compound_statement "{\n                wVar15 = towlower(wVar15);\n              }" ({ "{") (expression_statement "wVar15 = towlower(wVar15);" (assignment_expression "wVar15 = towlower(wVar15)" (identifier "wVar15") (= "=") (call_expression "towlower(wVar15)" (identifier "towlower") (argument_list "(wVar15)" (( "(") (identifier "wVar15") () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_001ad4ce;" (goto "goto") (statement_identifier "LAB_001ad4ce") (; ";")) (} "}"))) (if_statement "if (uVar5 == 0) {\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" (if "if") (parenthesized_expression "(uVar5 == 0)" (( "(") (binary_expression "uVar5 == 0" (identifier "uVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (iVar14 < 1) goto LAB_001ad32e;\nLAB_001ad44b:\n              iVar19 = iVar4;\n              wVar15 = local_70;\n              if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }\n              goto LAB_001ad4ce;\n            }" ({ "{") (if_statement "if (iVar14 < 1) goto LAB_001ad32e;" (if "if") (parenthesized_expression "(iVar14 < 1)" (( "(") (binary_expression "iVar14 < 1" (identifier "iVar14") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_001ad32e;" (goto "goto") (statement_identifier "LAB_001ad32e") (; ";"))) (labeled_statement "LAB_001ad44b:\n              iVar19 = iVar4;" (statement_identifier "LAB_001ad44b") (: ":") (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" (identifier "iVar19") (= "=") (identifier "iVar4")) (; ";"))) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" (identifier "wVar15") (= "=") (identifier "local_70")) (; ";")) (if_statement "if (iVar4 != 1) {\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" (if "if") (parenthesized_expression "(iVar4 != 1)" (( "(") (binary_expression "iVar4 != 1" (identifier "iVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n                uVar18 = 0;\n                iVar19 = 1;\n                goto LAB_001ad345;\n              }" ({ "{") (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_001ad345;" (goto "goto") (statement_identifier "LAB_001ad345") (; ";")) (} "}"))) (goto_statement "goto LAB_001ad4ce;" (goto "goto") (statement_identifier "LAB_001ad4ce") (; ";")) (} "}"))) (if_statement "if (iVar19 != 0) goto LAB_001ad44b;" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001ad44b;" (goto "goto") (statement_identifier "LAB_001ad44b") (; ";"))) (labeled_statement "LAB_001ad32e:\n            iVar19 = iVar4;" (statement_identifier "LAB_001ad32e") (: ":") (expression_statement "iVar19 = iVar4;" (assignment_expression "iVar19 = iVar4" (identifier "iVar19") (= "=") (identifier "iVar4")) (; ";"))) (if_statement "if (iVar4 != 1) {\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" (if "if") (parenthesized_expression "(iVar4 != 1)" (( "(") (binary_expression "iVar4 != 1" (identifier "iVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n              uVar18 = 2;\n              iVar19 = 1;\n              goto LAB_001ad345;\n            }" ({ "{") (expression_statement "uVar18 = 2;" (assignment_expression "uVar18 = 2" (identifier "uVar18") (= "=") (number_literal "2")) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_001ad345;" (goto "goto") (statement_identifier "LAB_001ad345") (; ";")) (} "}"))) (labeled_statement "LAB_001ad542:\n            ppuVar9 = __ctype_b_loc();" (statement_identifier "LAB_001ad542") (: ":") (expression_statement "ppuVar9 = __ctype_b_loc();" (assignment_expression "ppuVar9 = __ctype_b_loc()" (identifier "ppuVar9") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "wVar15 = local_70;" (assignment_expression "wVar15 = local_70" (identifier "wVar15") (= "=") (identifier "local_70")) (; ";")) (if_statement "if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)) {\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }" (if "if") (parenthesized_expression "(((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180))" (( "(") (binary_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&\n               ((uint)(local_70 + L'\x80') < 0x180)" (parenthesized_expression "((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0)" (( "(") (binary_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2)" (( "(") (binary_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2" (pointer_expression "*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1" (binary_expression "(long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2" (cast_expression "(long)*ppuVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar9" (* "*") (identifier "ppuVar9"))) (+ "+") (binary_expression "(ulong)(uint)(local_70 & 0xff) * 2" (call_expression "(ulong)(uint)(local_70 & 0xff)" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uint)" (( "(") (identifier "uint") () ")"))) (argument_list "(local_70 & 0xff)" (( "(") (binary_expression "local_70 & 0xff" (identifier "local_70") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((uint)(local_70 + L'\x80') < 0x180)" (( "(") (binary_expression "(uint)(local_70 + L'\x80') < 0x180" (call_expression "(uint)(local_70 + L'\x80')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_70 + L'\x80')" (( "(") (binary_expression "local_70 + L'\x80'" (identifier "local_70") (+ "+") (char_literal "L'\x80'" (L' "L'") (escape_sequence "\x80") (' "'"))) () ")"))) (< "<") (number_literal "0x180")) () ")"))) () ")")) (compound_statement "{\n              pp_Var10 = __ctype_toupper_loc();\n              wVar15 = (*pp_Var10)[wVar15];\n            }" ({ "{") (expression_statement "pp_Var10 = __ctype_toupper_loc();" (assignment_expression "pp_Var10 = __ctype_toupper_loc()" (identifier "pp_Var10") (= "=") (call_expression "__ctype_toupper_loc()" (identifier "__ctype_toupper_loc") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "wVar15 = (*pp_Var10)[wVar15];" (assignment_expression "wVar15 = (*pp_Var10)[wVar15]" (identifier "wVar15") (= "=") (subscript_expression "(*pp_Var10)[wVar15]" (parenthesized_expression "(*pp_Var10)" (( "(") (pointer_expression "*pp_Var10" (* "*") (identifier "pp_Var10")) () ")")) ([ "[") (identifier "wVar15") (] "]"))) (; ";")) (} "}"))) (labeled_statement "LAB_001ad4ce:\n            local_a0[iVar17] = (char)wVar15;" (statement_identifier "LAB_001ad4ce") (: ":") (expression_statement "local_a0[iVar17] = (char)wVar15;" (assignment_expression "local_a0[iVar17] = (char)wVar15" (subscript_expression "local_a0[iVar17]" (identifier "local_a0") ([ "[") (identifier "iVar17") (] "]")) (= "=") (cast_expression "(char)wVar15" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "wVar15"))) (; ";"))) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" (identifier "iVar17") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}"))))) (expression_statement "mVar2 = local_68;" (assignment_expression "mVar2 = local_68" (identifier "mVar2") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (locale_mb_cur_max < 2) {\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }\n          else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" (if "if") (parenthesized_expression "(locale_mb_cur_max < 2)" (( "(") (binary_expression "locale_mb_cur_max < 2" (identifier "locale_mb_cur_max") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n            local_68 = mVar2;\n            iVar14 = iVar14 + 1;\n          }" ({ "{") (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" (identifier "local_68") (= "=") (identifier "mVar2")) (; ";")) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" (else "else") (compound_statement "{\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar14 = iVar14 + (int)uVar11;\n          }" ({ "{") (expression_statement "bVar3 = param_1[iVar14];" (assignment_expression "bVar3 = param_1[iVar14]" (identifier "bVar3") (= "=") (subscript_expression "param_1[iVar14]" (identifier "param_1") ([ "[") (identifier "iVar14") (] "]"))) (; ";")) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }" (if "if") (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (* "*") (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" (identifier "is_basic_table") (+ "+") (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar3 >> 5)" (( "(") (binary_expression "bVar3 >> 5" (identifier "bVar3") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar3 & 0x1f)" (( "(") (binary_expression "bVar3 & 0x1f" (identifier "bVar3") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }\n            }" ({ "{") (if_statement "if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" (if "if") (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar3 < '\0'))" (( "(") (binary_expression "(locale_utf8locale == 0) || ((char)bVar3 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" (( "(") (binary_expression "locale_utf8locale == 0" (identifier "locale_utf8locale") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((char)bVar3 < '\0')" (( "(") (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar3")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }\n              }" ({ "{") (expression_statement "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (identifier "uVar11") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (binary_expression "param_1 + iVar14" (identifier "param_1") (+ "+") (identifier "iVar14")) (, ",") (cast_expression "(long)(iVar13 - iVar14)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar13 - iVar14)" (( "(") (binary_expression "iVar13 - iVar14" (identifier "iVar13") (- "-") (identifier "iVar14")) () ")"))) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (if_statement "if (0xfffffffffffffffd < uVar11) {\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }" (if "if") (parenthesized_expression "(0xfffffffffffffffd < uVar11)" (( "(") (binary_expression "0xfffffffffffffffd < uVar11" (number_literal "0xfffffffffffffffd") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n                  local_68 = mVar2;\n                  iVar14 = iVar14 + 1;\n                  goto LAB_001ad70f;\n                }" ({ "{") (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" (identifier "local_68") (= "=") (identifier "mVar2")) (; ";")) (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_001ad70f;" (goto "goto") (statement_identifier "LAB_001ad70f") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" (else "else") (compound_statement "{\n                uVar11 = (ulong)(bVar3 != 0);\n              }" ({ "{") (expression_statement "uVar11 = (ulong)(bVar3 != 0);" (assignment_expression "uVar11 = (ulong)(bVar3 != 0)" (identifier "uVar11") (= "=") (call_expression "(ulong)(bVar3 != 0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar3 != 0)" (( "(") (binary_expression "bVar3 != 0" (identifier "bVar3") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar11 == 0) {\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar14 = iVar14 + 1;\n                goto LAB_001ad70f;\n              }" ({ "{") (expression_statement "iVar14 = iVar14 + 1;" (assignment_expression "iVar14 = iVar14 + 1" (identifier "iVar14") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_001ad70f;" (goto "goto") (statement_identifier "LAB_001ad70f") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              uVar11 = 1;\n            }" (else "else") (compound_statement "{\n              uVar11 = 1;\n            }" ({ "{") (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "iVar14 = iVar14 + (int)uVar11;" (assignment_expression "iVar14 = iVar14 + (int)uVar11" (identifier "iVar14") (= "=") (binary_expression "iVar14 + (int)uVar11" (identifier "iVar14") (+ "+") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" (else "else") (compound_statement "{\n          iVar6 = iVar14 + 1;\n          local_68 = mVar2;\n          if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }\nLAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);\n          iVar7 = strmatch(param_2,__ptr,0x20);\n          free(__ptr);\n          if (iVar7 != 1) goto LAB_001ad298;\n          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));\n          iVar17 = iVar17 + (iVar6 - iVar14);\n          iVar19 = 1;\n          iVar14 = iVar6;\n        }" ({ "{") (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" (identifier "local_68") (= "=") (identifier "mVar2")) (; ";")) (if_statement "if (1 < locale_mb_cur_max) {\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }" (if "if") (parenthesized_expression "(1 < locale_mb_cur_max)" (( "(") (binary_expression "1 < locale_mb_cur_max" (number_literal "1") (< "<") (identifier "locale_mb_cur_max")) () ")")) (compound_statement "{\n            bVar3 = param_1[iVar14];\n            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }\n            iVar6 = iVar14 + (int)uVar11;\n          }" ({ "{") (expression_statement "bVar3 = param_1[iVar14];" (assignment_expression "bVar3 = param_1[iVar14]" (identifier "bVar3") (= "=") (subscript_expression "param_1[iVar14]" (identifier "param_1") ([ "[") (identifier "iVar14") (] "]"))) (; ";")) (if_statement "if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }\n            else {\n              uVar11 = 1;\n            }" (if "if") (parenthesized_expression "((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0" (parenthesized_expression "(*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1)" (( "(") (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1" (binary_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f)" (pointer_expression "*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (* "*") (cast_expression "(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(is_basic_table + (ulong)(bVar3 >> 5) * 4)" (( "(") (binary_expression "is_basic_table + (ulong)(bVar3 >> 5) * 4" (identifier "is_basic_table") (+ "+") (binary_expression "(ulong)(bVar3 >> 5) * 4" (call_expression "(ulong)(bVar3 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar3 >> 5)" (( "(") (binary_expression "bVar3 >> 5" (identifier "bVar3") (>> ">>") (number_literal "5")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (>> ">>") (parenthesized_expression "(bVar3 & 0x1f)" (( "(") (binary_expression "bVar3 & 0x1f" (identifier "bVar3") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }\n              if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }\n            }" ({ "{") (if_statement "if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }\n              else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" (if "if") (parenthesized_expression "((locale_utf8locale == 0) || ((char)bVar3 < '\0'))" (( "(") (binary_expression "(locale_utf8locale == 0) || ((char)bVar3 < '\0')" (parenthesized_expression "(locale_utf8locale == 0)" (( "(") (binary_expression "locale_utf8locale == 0" (identifier "locale_utf8locale") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((char)bVar3 < '\0')" (( "(") (binary_expression "(char)bVar3 < '\0'" (cast_expression "(char)bVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar3")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);\n                if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }\n              }" ({ "{") (expression_statement "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);" (assignment_expression "uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (identifier "uVar11") (= "=") (call_expression "mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (identifier "mbrtowc") (argument_list "((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68)" (( "(") (cast_expression "(wchar_t *)0x0" (( "(") (type_descriptor "wchar_t *" (type_identifier "wchar_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (, ",") (binary_expression "param_1 + iVar14" (identifier "param_1") (+ "+") (identifier "iVar14")) (, ",") (cast_expression "(long)(iVar13 - iVar14)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar13 - iVar14)" (( "(") (binary_expression "iVar13 - iVar14" (identifier "iVar13") (- "-") (identifier "iVar14")) () ")"))) (, ",") (pointer_expression "&local_68" (& "&") (identifier "local_68")) () ")")))) (; ";")) (if_statement "if (0xfffffffffffffffd < uVar11) {\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }" (if "if") (parenthesized_expression "(0xfffffffffffffffd < uVar11)" (( "(") (binary_expression "0xfffffffffffffffd < uVar11" (number_literal "0xfffffffffffffffd") (< "<") (identifier "uVar11")) () ")")) (compound_statement "{\n                  iVar6 = iVar14 + 1;\n                  local_68 = mVar2;\n                  goto LAB_001ad263;\n                }" ({ "{") (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_68 = mVar2;" (assignment_expression "local_68 = mVar2" (identifier "local_68") (= "=") (identifier "mVar2")) (; ";")) (goto_statement "goto LAB_001ad263;" (goto "goto") (statement_identifier "LAB_001ad263") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                uVar11 = (ulong)(bVar3 != 0);\n              }" (else "else") (compound_statement "{\n                uVar11 = (ulong)(bVar3 != 0);\n              }" ({ "{") (expression_statement "uVar11 = (ulong)(bVar3 != 0);" (assignment_expression "uVar11 = (ulong)(bVar3 != 0)" (identifier "uVar11") (= "=") (call_expression "(ulong)(bVar3 != 0)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(bVar3 != 0)" (( "(") (binary_expression "bVar3 != 0" (identifier "bVar3") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar11 == 0) {\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar6 = iVar14 + 1;\n                goto LAB_001ad263;\n              }" ({ "{") (expression_statement "iVar6 = iVar14 + 1;" (assignment_expression "iVar6 = iVar14 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar14 + 1" (identifier "iVar14") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_001ad263;" (goto "goto") (statement_identifier "LAB_001ad263") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              uVar11 = 1;\n            }" (else "else") (compound_statement "{\n              uVar11 = 1;\n            }" ({ "{") (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (} "}")))) (expression_statement "iVar6 = iVar14 + (int)uVar11;" (assignment_expression "iVar6 = iVar14 + (int)uVar11" (identifier "iVar6") (= "=") (binary_expression "iVar14 + (int)uVar11" (identifier "iVar14") (+ "+") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")))) (; ";")) (} "}"))) (labeled_statement "LAB_001ad263:\n          __ptr = (void *)substring(param_1,iVar14,iVar6);" (statement_identifier "LAB_001ad263") (: ":") (expression_statement "__ptr = (void *)substring(param_1,iVar14,iVar6);" (assignment_expression "__ptr = (void *)substring(param_1,iVar14,iVar6)" (identifier "__ptr") (= "=") (cast_expression "(void *)substring(param_1,iVar14,iVar6)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "substring(param_1,iVar14,iVar6)" (identifier "substring") (argument_list "(param_1,iVar14,iVar6)" (( "(") (identifier "param_1") (, ",") (identifier "iVar14") (, ",") (identifier "iVar6") () ")"))))) (; ";"))) (expression_statement "iVar7 = strmatch(param_2,__ptr,0x20);" (assignment_expression "iVar7 = strmatch(param_2,__ptr,0x20)" (identifier "iVar7") (= "=") (call_expression "strmatch(param_2,__ptr,0x20)" (identifier "strmatch") (argument_list "(param_2,__ptr,0x20)" (( "(") (identifier "param_2") (, ",") (identifier "__ptr") (, ",") (number_literal "0x20") () ")")))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (if_statement "if (iVar7 != 1) goto LAB_001ad298;" (if "if") (parenthesized_expression "(iVar7 != 1)" (( "(") (binary_expression "iVar7 != 1" (identifier "iVar7") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_001ad298;" (goto "goto") (statement_identifier "LAB_001ad298") (; ";"))) (expression_statement "memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));" (call_expression "memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14))" (identifier "memcpy") (argument_list "(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14))" (( "(") (binary_expression "local_a0 + iVar17" (identifier "local_a0") (+ "+") (identifier "iVar17")) (, ",") (binary_expression "param_1 + iVar14" (identifier "param_1") (+ "+") (identifier "iVar14")) (, ",") (cast_expression "(long)(iVar6 - iVar14)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar6 - iVar14)" (( "(") (binary_expression "iVar6 - iVar14" (identifier "iVar6") (- "-") (identifier "iVar14")) () ")"))) () ")"))) (; ";")) (expression_statement "iVar17 = iVar17 + (iVar6 - iVar14);" (assignment_expression "iVar17 = iVar17 + (iVar6 - iVar14)" (identifier "iVar17") (= "=") (binary_expression "iVar17 + (iVar6 - iVar14)" (identifier "iVar17") (+ "+") (parenthesized_expression "(iVar6 - iVar14)" (( "(") (binary_expression "iVar6 - iVar14" (identifier "iVar6") (- "-") (identifier "iVar14")) () ")")))) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar14 = iVar6;" (assignment_expression "iVar14 = iVar6" (identifier "iVar14") (= "=") (identifier "iVar6")) (; ";")) (} "}")))) (labeled_statement "LAB_001ad70f:" (statement_identifier "LAB_001ad70f") (: ":") (expression_statement "" (; ""))) (} "}")) (while "while") (parenthesized_expression "(iVar14 < iVar13)" (( "(") (binary_expression "iVar14 < iVar13" (identifier "iVar14") (< "<") (identifier "iVar13")) () ")")) (; ";")) (} "}")))) (expression_statement "local_a0[iVar17] = 0;" (assignment_expression "local_a0[iVar17] = 0" (subscript_expression "local_a0[iVar17]" (identifier "local_a0") ([ "[") (identifier "iVar17") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return local_a0;\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 local_a0;\n  }" ({ "{") (return_statement "return local_a0;" (return "return") (identifier "local_a0") (; ";")) (} "}"))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

char * function_1(char *var_2,char *var_18,type_1 var_9)

{
  char var_6;
  long var_44;
  type_2 mVar3;
  type_3 var_13;
  int var_22;
  type_4 var_20;
  int var_17;
  size_t var_10;
  char *var_5;
  type_5 **ppuVar10;
  type_6 **pp_Var11;
  type_7 var_39;
  long var_4;
  int var_8;
  int var_11;
  type_1 var_31;
  type_4 var_19;
  int var_32;
  type_4 var_26;
  type_3 *var_15;
  int var_21;
  long var_1;
  type_3 bVar20;
  char *var_35;
  type_1 var_24;
  type_1 wc_1;
  type_2 state;
  type_2 mps;
  char mb [17];
  
  bVar20 = 0;
  var_44 = *(long *)(var_1 + 0x28);
  if ((var_2 == (char *)0x0) || (*var_2 == '\0')) {
    var_35 = (char *)var_3(1);
    *var_35 = '\0';
  }
  else {
    state.__count = L'\0';
    state.__value = (type_8)0x0;
    var_4 = -1;
    var_5 = var_2;
    do {
      if (var_4 == 0) break;
      var_4 = var_4 + -1;
      var_6 = *var_5;
      var_5 = var_5 + 1;
    } while (var_6 != '\0');
    var_8 = ~(type_4)var_4 - 1;
    var_10 = var_7();
    var_22 = (int)var_10;
    var_35 = (char *)var_3((long)(var_8 * 2 + 1));
    var_20 = var_9 & 0x1000;
    var_19 = var_9 & 0xffffefff;
    if (var_8 < 1) {
      var_32 = 0;
    }
    else {
      var_21 = 0;
      var_32 = 0;
      var_11 = 0;
      do {
        var_10 = var_7();
        if (var_10 == 1) {
LAB_001ad1c0:
          var_31 = (type_1)var_2[var_11];
        }
        else {
          var_15 = (type_3 *)(var_2 + var_11);
          var_13 = *var_15;
          if ((*(type_4 *)(var_12 + (type_7)(var_13 >> 5) * 4) >> (var_13 & 0x1f) & 1) != 0)
          goto LAB_001ad1c0;
          var_4 = -1;
          var_5 = var_2;
          do {
            if (var_4 == 0) break;
            var_4 = var_4 + -1;
            var_6 = *var_5;
            var_5 = var_5 + (type_7)bVar20 * -2 + 1;
          } while (var_6 != '\0');
          var_31 = (int)(char)var_13;
          if (var_11 < (int)(~(type_4)var_4 - 2)) {
            mps.__count = L'\0';
            mps.__value = (type_8)0x0;
            var_10 = var_14(&wc_1,(char *)var_15,(long)(int)((~(type_4)var_4 - 1) - var_11),
                            (type_9 *)&mps);
            var_31 = wc_1;
            if (0xfffffffffffffffc < var_10 - 1) {
              var_31 = (type_1)(char)*var_15;
            }
          }
        }
        var_24 = var_31;
        var_17 = var_16(var_31);
        mVar3 = state;
        if (var_17 == 0) {
          var_21 = 0;
        }
        if (var_18 == (char *)0x0) {
LAB_001ad298:
          if (var_19 == 4) {
            if (var_20 == 0) goto joined_r0x001ad3be;
joined_r0x001ad328:
            if (var_21 == 0) goto LAB_001ad32e;
LAB_001ad3c4:
            var_21 = var_22;
            if (var_22 == 1) {
LAB_001ad3d4:
              ppuVar10 = var_23();
              var_31 = var_24;
              if (((*(type_3 *)((long)*ppuVar10 + (type_7)(type_4)(var_24 & 0xff) * 2 + 1) & 1) != 0) &&
                 ((type_4)(var_24 + L'\x80') < 0x180)) {
                pp_Var11 = var_25();
                var_31 = (*pp_Var11)[var_31];
              }
              goto LAB_001ad4ce;
            }
            var_26 = 1;
            var_21 = 1;
LAB_001ad345:
            var_10 = var_14(&var_24,var_2 + var_11,(long)(var_8 - var_11),(type_9 *)&state);
            if (0xfffffffffffffffd < var_10) {
              var_24 = (type_1)(type_3)var_2[var_11];
LAB_001ad5ac:
              if (var_26 == 2) goto LAB_001ad542;
              var_31 = var_24;
              if ((int)var_26 < 3) {
                if (var_26 == 1) goto LAB_001ad3d4;
              }
              else if ((var_26 == 0x10) || (var_26 == 0x20)) goto LAB_001ad5c8;
              goto LAB_001ad4ce;
            }
            if (var_10 == 0) {
              var_24 = L'\0';
            }
            var_31 = var_24;
            if (var_26 == 2) {
              var_17 = var_27(var_24);
              if (var_17 != 0) {
                var_31 = var_28(var_31);
              }
            }
            else if ((int)var_26 < 3) {
              if ((var_26 == 1) && (var_17 = var_29(var_24), var_17 != 0)) {
                var_31 = var_30(var_31);
              }
            }
            else if ((var_26 == 0x10) || (var_26 == 0x20)) {
              var_17 = var_29(var_24);
              if (var_17 == 0) {
                var_17 = var_27(var_31);
                if (var_17 != 0) {
                  var_31 = var_28(var_31);
                }
              }
              else {
                var_31 = var_30(var_31);
              }
            }
            if ((var_31 < L'Ā') &&
               (var_13 = (type_3)var_31,
               (*(type_4 *)(var_12 + (type_7)(var_13 >> 5) * 4) >> (var_13 & 0x1f) & 1) != 0)) {
              var_35[var_32] = var_13;
              var_32 = var_32 + 1;
            }
            else {
              var_10 = var_33(mb,var_31,(type_9 *)&state);
              var_17 = (int)var_10;
              if (0 < var_17) {
                mb[var_17] = '\0';
              }
              var_34(var_35 + var_32,mb,(long)var_17);
              var_32 = var_32 + var_17;
            }
          }
          else {
            if (var_19 == 8) {
              if (var_20 != 0) goto joined_r0x001ad328;
joined_r0x001ad3be:
              if (var_11 < 1) goto LAB_001ad32e;
              goto LAB_001ad3c4;
            }
            if (var_19 != 0x40) {
              if (var_19 == 0x80) {
                if (var_20 == 0) {
                  var_26 = (type_4)(var_11 < 1);
                  var_21 = 1;
                }
                else {
                  var_26 = (type_4)(var_21 == 0);
                  var_21 = 1;
                }
LAB_001ad2d3:
                if (var_22 != 1) goto LAB_001ad345;
                goto LAB_001ad5ac;
              }
              var_26 = var_19;
              if (var_19 != 0x10) goto LAB_001ad2d3;
              if (var_21 != 0) goto LAB_001ad44b;
              var_21 = var_22;
              if (var_22 != 1) {
                var_21 = 1;
                goto LAB_001ad345;
              }
LAB_001ad5c8:
              var_31 = var_24;
              var_17 = var_29(var_24);
              if (var_17 == 0) {
                var_17 = var_27(var_31);
                if (var_17 != 0) {
                  var_31 = var_28(var_31);
                }
              }
              else {
                var_31 = var_30(var_31);
              }
              goto LAB_001ad4ce;
            }
            if (var_20 == 0) {
              if (var_11 < 1) goto LAB_001ad32e;
LAB_001ad44b:
              var_21 = var_22;
              var_31 = var_24;
              if (var_22 != 1) {
                var_26 = 0;
                var_21 = 1;
                goto LAB_001ad345;
              }
              goto LAB_001ad4ce;
            }
            if (var_21 != 0) goto LAB_001ad44b;
LAB_001ad32e:
            var_21 = var_22;
            if (var_22 != 1) {
              var_26 = 2;
              var_21 = 1;
              goto LAB_001ad345;
            }
LAB_001ad542:
            ppuVar10 = var_23();
            var_31 = var_24;
            if (((*(type_3 *)((long)*ppuVar10 + (type_7)(type_4)(var_24 & 0xff) * 2 + 1) & 2) != 0) &&
               ((type_4)(var_24 + L'\x80') < 0x180)) {
              pp_Var11 = var_36();
              var_31 = (*pp_Var11)[var_31];
            }
LAB_001ad4ce:
            var_35[var_32] = (char)var_31;
            var_32 = var_32 + 1;
          }
          mVar3 = state;
          if (var_37 < 2) {
            var_11 = var_11 + 1;
            state = mVar3;
          }
          else {
            var_13 = var_2[var_11];
            if ((*(type_4 *)(var_12 + (type_7)(var_13 >> 5) * 4) >> (var_13 & 0x1f) & 1) == 0) {
              if ((var_38 == 0) || ((char)var_13 < '\0')) {
                var_39 = var_14((type_1 *)0x0,var_2 + var_11,(long)(var_8 - var_11),
                                 (type_9 *)&state);
                if (0xfffffffffffffffd < var_39) {
                  var_11 = var_11 + 1;
                  state = mVar3;
                  goto LAB_001ad70f;
                }
              }
              else {
                var_39 = (type_7)(var_13 != 0);
              }
              if (var_39 == 0) {
                var_11 = var_11 + 1;
                goto LAB_001ad70f;
              }
            }
            else {
              var_39 = 1;
            }
            var_11 = var_11 + (int)var_39;
          }
        }
        else {
          var_17 = var_11 + 1;
          state = mVar3;
          if (1 < var_37) {
            var_13 = var_2[var_11];
            if ((*(type_4 *)(var_12 + (type_7)(var_13 >> 5) * 4) >> (var_13 & 0x1f) & 1) == 0) {
              if ((var_38 == 0) || ((char)var_13 < '\0')) {
                var_39 = var_14((type_1 *)0x0,var_2 + var_11,(long)(var_8 - var_11),
                                 (type_9 *)&state);
                if (0xfffffffffffffffd < var_39) {
                  var_17 = var_11 + 1;
                  state = mVar3;
                  goto LAB_001ad263;
                }
              }
              else {
                var_39 = (type_7)(var_13 != 0);
              }
              if (var_39 == 0) {
                var_17 = var_11 + 1;
                goto LAB_001ad263;
              }
            }
            else {
              var_39 = 1;
            }
            var_17 = var_11 + (int)var_39;
          }
LAB_001ad263:
          var_5 = var_40(var_2,var_11,var_17);
          var_31 = var_41(var_18,var_5,L' ');
          var_42(var_5);
          if (var_31 != L'\x01') goto LAB_001ad298;
          var_43(var_35 + var_32,var_2 + var_11,(long)(var_17 - var_11));
          var_32 = var_32 + (var_17 - var_11);
          var_21 = 1;
          var_11 = var_17;
        }
LAB_001ad70f:
      } while (var_11 < var_8);
    }
    var_35[var_32] = '\0';
  }
  if (var_44 == *(long *)(var_1 + 0x28)) {
    return var_35;
  }
                    /* WARNING: Subroutine does not return */
  var_45();
}


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

undefined1 * MASKED(char *param_1,long param_2,uint param_3)

{
  char cVar1;
  mbstate_t mVar2;
  byte bVar3;
  int iVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  size_t sVar8;
  void *__ptr;
  ushort **ppuVar9;
  __int32_t **pp_Var10;
  ulong uVar11;
  long lVar12;
  int iVar13;
  int iVar14;
  wchar_t wVar15;
  char *pcVar16;
  int iVar17;
  uint uVar18;
  byte *__s;
  int iVar19;
  long in_FS_OFFSET;
  byte bVar20;
  undefined1 *local_a0;
  wchar_t local_70;
  wchar_t local_6c;
  mbstate_t local_68;
  mbstate_t local_60;
  char local_58 [24];
  long local_40;
  
  bVar20 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if ((param_1 == (char *)0x0) || (*param_1 == '\0')) {
    local_a0 = (undefined1 *)xmalloc(1);
    *local_a0 = 0;
  }
  else {
    local_68.__count = 0;
    local_68.__value = (_union_27)0x0;
    lVar12 = -1;
    pcVar16 = param_1;
    do {
      if (lVar12 == 0) break;
      lVar12 = lVar12 + -1;
      cVar1 = *pcVar16;
      pcVar16 = pcVar16 + 1;
    } while (cVar1 != '\0');
    iVar13 = ~(uint)lVar12 - 1;
    sVar8 = __ctype_get_mb_cur_max();
    iVar4 = (int)sVar8;
    local_a0 = (undefined1 *)xmalloc((long)(iVar13 * 2 + 1));
    uVar5 = param_3 & 0x1000;
    param_3 = param_3 & 0xffffefff;
    if (iVar13 < 1) {
      iVar17 = 0;
    }
    else {
      iVar19 = 0;
      iVar17 = 0;
      iVar14 = 0;
      do {
        sVar8 = __ctype_get_mb_cur_max();
        if (sVar8 == 1) {
LAB_001ad1c0:
          wVar15 = (wchar_t)param_1[iVar14];
        }
        else {
          __s = (byte *)(param_1 + iVar14);
          bVar3 = *__s;
          if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)
          goto LAB_001ad1c0;
          lVar12 = -1;
          pcVar16 = param_1;
          do {
            if (lVar12 == 0) break;
            lVar12 = lVar12 + -1;
            cVar1 = *pcVar16;
            pcVar16 = pcVar16 + (ulong)bVar20 * -2 + 1;
          } while (cVar1 != '\0');
          wVar15 = (int)(char)bVar3;
          if (iVar14 < (int)(~(uint)lVar12 - 2)) {
            local_60.__count = 0;
            local_60.__value = (_union_27)0x0;
            sVar8 = mbrtowc(&local_6c,(char *)__s,(long)(int)((~(uint)lVar12 - 1) - iVar14),
                            &local_60);
            wVar15 = local_6c;
            if (0xfffffffffffffffc < sVar8 - 1) {
              wVar15 = (wchar_t)(char)*__s;
            }
          }
        }
        local_70 = wVar15;
        iVar6 = iswalnum(wVar15);
        mVar2 = local_68;
        if (iVar6 == 0) {
          iVar19 = 0;
        }
        if (param_2 == 0) {
LAB_001ad298:
          if (param_3 == 4) {
            if (uVar5 == 0) goto joined_r0x001ad3be;
joined_r0x001ad328:
            if (iVar19 == 0) goto LAB_001ad32e;
LAB_001ad3c4:
            iVar19 = iVar4;
            if (iVar4 == 1) {
LAB_001ad3d4:
              ppuVar9 = __ctype_b_loc();
              wVar15 = local_70;
              if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 1) != 0) &&
                 ((uint)(local_70 + L'\x80') < 0x180)) {
                pp_Var10 = __ctype_tolower_loc();
                wVar15 = (*pp_Var10)[wVar15];
              }
              goto LAB_001ad4ce;
            }
            uVar18 = 1;
            iVar19 = 1;
LAB_001ad345:
            sVar8 = mbrtowc(&local_70,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);
            if (0xfffffffffffffffd < sVar8) {
              local_70 = (wchar_t)(byte)param_1[iVar14];
LAB_001ad5ac:
              if (uVar18 == 2) goto LAB_001ad542;
              wVar15 = local_70;
              if ((int)uVar18 < 3) {
                if (uVar18 == 1) goto LAB_001ad3d4;
              }
              else if ((uVar18 == 0x10) || (uVar18 == 0x20)) goto LAB_001ad5c8;
              goto LAB_001ad4ce;
            }
            if (sVar8 == 0) {
              local_70 = L'\0';
            }
            wVar15 = local_70;
            if (uVar18 == 2) {
              iVar6 = iswlower(local_70);
              if (iVar6 != 0) {
                wVar15 = towupper(wVar15);
              }
            }
            else if ((int)uVar18 < 3) {
              if ((uVar18 == 1) && (iVar6 = iswupper(local_70), iVar6 != 0)) {
                wVar15 = towlower(wVar15);
              }
            }
            else if ((uVar18 == 0x10) || (uVar18 == 0x20)) {
              iVar6 = iswupper(local_70);
              if (iVar6 == 0) {
                iVar6 = iswlower(wVar15);
                if (iVar6 != 0) {
                  wVar15 = towupper(wVar15);
                }
              }
              else {
                wVar15 = towlower(wVar15);
              }
            }
            if ((wVar15 < L'Ā') &&
               (bVar3 = (byte)wVar15,
               (*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) != 0)) {
              local_a0[iVar17] = bVar3;
              iVar17 = iVar17 + 1;
            }
            else {
              sVar8 = wcrtomb(local_58,wVar15,&local_68);
              iVar6 = (int)sVar8;
              if (0 < iVar6) {
                local_58[iVar6] = '\0';
              }
              strncpy(local_a0 + iVar17,local_58,(long)iVar6);
              iVar17 = iVar17 + iVar6;
            }
          }
          else {
            if (param_3 == 8) {
              if (uVar5 != 0) goto joined_r0x001ad328;
joined_r0x001ad3be:
              if (iVar14 < 1) goto LAB_001ad32e;
              goto LAB_001ad3c4;
            }
            if (param_3 != 0x40) {
              if (param_3 == 0x80) {
                if (uVar5 == 0) {
                  uVar18 = (uint)(iVar14 < 1);
                  iVar19 = 1;
                }
                else {
                  uVar18 = (uint)(iVar19 == 0);
                  iVar19 = 1;
                }
LAB_001ad2d3:
                if (iVar4 != 1) goto LAB_001ad345;
                goto LAB_001ad5ac;
              }
              uVar18 = param_3;
              if (param_3 != 0x10) goto LAB_001ad2d3;
              if (iVar19 != 0) goto LAB_001ad44b;
              iVar19 = iVar4;
              if (iVar4 != 1) {
                iVar19 = 1;
                goto LAB_001ad345;
              }
LAB_001ad5c8:
              wVar15 = local_70;
              iVar6 = iswupper(local_70);
              if (iVar6 == 0) {
                iVar6 = iswlower(wVar15);
                if (iVar6 != 0) {
                  wVar15 = towupper(wVar15);
                }
              }
              else {
                wVar15 = towlower(wVar15);
              }
              goto LAB_001ad4ce;
            }
            if (uVar5 == 0) {
              if (iVar14 < 1) goto LAB_001ad32e;
LAB_001ad44b:
              iVar19 = iVar4;
              wVar15 = local_70;
              if (iVar4 != 1) {
                uVar18 = 0;
                iVar19 = 1;
                goto LAB_001ad345;
              }
              goto LAB_001ad4ce;
            }
            if (iVar19 != 0) goto LAB_001ad44b;
LAB_001ad32e:
            iVar19 = iVar4;
            if (iVar4 != 1) {
              uVar18 = 2;
              iVar19 = 1;
              goto LAB_001ad345;
            }
LAB_001ad542:
            ppuVar9 = __ctype_b_loc();
            wVar15 = local_70;
            if (((*(byte *)((long)*ppuVar9 + (ulong)(uint)(local_70 & 0xff) * 2 + 1) & 2) != 0) &&
               ((uint)(local_70 + L'\x80') < 0x180)) {
              pp_Var10 = __ctype_toupper_loc();
              wVar15 = (*pp_Var10)[wVar15];
            }
LAB_001ad4ce:
            local_a0[iVar17] = (char)wVar15;
            iVar17 = iVar17 + 1;
          }
          mVar2 = local_68;
          if (locale_mb_cur_max < 2) {
            local_68 = mVar2;
            iVar14 = iVar14 + 1;
          }
          else {
            bVar3 = param_1[iVar14];
            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {
              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {
                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);
                if (0xfffffffffffffffd < uVar11) {
                  local_68 = mVar2;
                  iVar14 = iVar14 + 1;
                  goto LAB_001ad70f;
                }
              }
              else {
                uVar11 = (ulong)(bVar3 != 0);
              }
              if (uVar11 == 0) {
                iVar14 = iVar14 + 1;
                goto LAB_001ad70f;
              }
            }
            else {
              uVar11 = 1;
            }
            iVar14 = iVar14 + (int)uVar11;
          }
        }
        else {
          iVar6 = iVar14 + 1;
          local_68 = mVar2;
          if (1 < locale_mb_cur_max) {
            bVar3 = param_1[iVar14];
            if ((*(uint *)(is_basic_table + (ulong)(bVar3 >> 5) * 4) >> (bVar3 & 0x1f) & 1) == 0) {
              if ((locale_utf8locale == 0) || ((char)bVar3 < '\0')) {
                uVar11 = mbrtowc((wchar_t *)0x0,param_1 + iVar14,(long)(iVar13 - iVar14),&local_68);
                if (0xfffffffffffffffd < uVar11) {
                  iVar6 = iVar14 + 1;
                  local_68 = mVar2;
                  goto LAB_001ad263;
                }
              }
              else {
                uVar11 = (ulong)(bVar3 != 0);
              }
              if (uVar11 == 0) {
                iVar6 = iVar14 + 1;
                goto LAB_001ad263;
              }
            }
            else {
              uVar11 = 1;
            }
            iVar6 = iVar14 + (int)uVar11;
          }
LAB_001ad263:
          __ptr = (void *)substring(param_1,iVar14,iVar6);
          iVar7 = strmatch(param_2,__ptr,0x20);
          free(__ptr);
          if (iVar7 != 1) goto LAB_001ad298;
          memcpy(local_a0 + iVar17,param_1 + iVar14,(long)(iVar6 - iVar14));
          iVar17 = iVar17 + (iVar6 - iVar14);
          iVar19 = 1;
          iVar14 = iVar6;
        }
LAB_001ad70f:
      } while (iVar14 < iVar13);
    }
    local_a0[iVar17] = 0;
  }
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return local_a0;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

